反向工程x86处理器微码

作者:

菲利普·科佩(Philipp Koppe)、本杰明·科伦达(Benjamin Kollenda)、马克·费比亚克(Marc Fyrbiak)、克里斯蒂安·基森(Christian Kison)、罗伯特·高利克(Robert Gawlik)、克里斯托夫·帕尔(Christof Paar)和托,波鸿鲁尔大学

摘要:

微代码是CPU物理组件之上的抽象层,目前存在于大多数通用CPU中。除了简化复杂而庞大的指令集之外,它还提供了一种更新机制,允许在不需要任何特殊硬件的情况下就地修补CPU。众所周知,CPU会定期使用此机制进行更新,但由于微码和更新机制是专有的,尚未进行彻底分析,因此对其内部工作机制知之甚少。

本文以AMD的K8和K10微体系结构为例,对传统COTS CPU的微码语义及其更新机制的内部工作进行了逆向工程。此外,我们还演示了如何开发自定义微码更新。我们描述了微码语义,并另外提供了一组微程序,以演示此技术提供的可能性。为此,我们的微程序范围广泛,从CPU支持的仪器到微代码特洛伊木马,甚至可以从web浏览器中访问,并启用远程代码执行和加密实现攻击。

开放存取媒体

USENIX致力于开放访问我们活动上展示的研究。活动开始后,所有人都可以免费获得论文和会议记录。活动结束后发布的任何视频、音频和/或幻灯片也免费向所有人开放。支持USENIX以及我们对开放存取的承诺。

BibTeX公司
@进行中{203688,
author={菲利普·科佩(Philipp Koppe)、本杰明·科伦达(Benjamin Kollenda)、马克·费比亚克(Marc Fyrbiak)、克里斯蒂安·基森(Christian Kison)、罗伯特·高利克(Robert Gawlik)、克里斯托夫·帕尔(Christof Paar,
title={反向工程x86处理器微码},
booktitle={第26届USENIX安全研讨会(USENIX-Security 17)},
年份={2017年},
isbn={978-1-931971-40-9},
地址={温哥华,不列颠哥伦比亚},
页数={1163--1180},
网址={https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/koppe},
publisher={USENIX协会},
月=八月
}

演示文稿视频