[论文解读] Reverse Engineering x86 Processor Microcode
本文逆向分析了AMD K8和K10 x86处理器的微代码及其更新机制,展示了如何开发自定义微代码更新以实现CPU辅助的代码插桩,或部署可实现远程代码执行和密码学攻击的恶意微代码后门。其主要贡献在于首次对商用现成(COTS)CPU中的微代码语义和更新流程进行了详细分析,揭示了关键的安全影响,并展示了防御性和攻击性硬件级漏洞利用的潜力。
Microcode is an abstraction layer on top of the physical components of a CPU and present in most general-purpose CPUs today. In addition to facilitate complex and vast instruction sets, it also provides an update mechanism that allows CPUs to be patched in-place without requiring any special hardware. While it is well-known that CPUs are regularly updated with this mechanism, very little is known about its inner workings given that microcode and the update mechanism are proprietary and have not been throughly analyzed yet. In this paper, we reverse engineer the microcode semantics and inner workings of its update mechanism of conventional COTS CPUs on the example of AMD's K8 and K10 microarchitectures. Furthermore, we demonstrate how to develop custom microcode updates. We describe the microcode semantics and additionally present a set of microprograms that demonstrate the possibilities offered by this technology. To this end, our microprograms range from CPU-assisted instrumentation to microcoded Trojans that can even be reached from within a web browser and enable remote code execution and cryptographic implementation attacks.
研究动机与目标
- 逆向分析AMD K8和K10 x86处理器的微代码语义及其更新机制,这些内容此前未被公开文档化且属于专有技术。
- 证明在商用现成(COTS)CPU上开发并部署自定义微代码更新的可行性。
- 探讨微代码更新的安全影响,包括持久性低级别后门和基于硬件的攻击的潜在风险。
- 研究利用微代码实现有益用途的可能性,例如动态程序分析、二进制插桩和性能优化。
提出的方法
- 通过分析引导过程中通过BIOS/UEFI加载的微代码补丁,逆向分析了AMD K8和K10处理器的微代码更新机制。
- 从固件镜像中提取并逆向分析微代码数据,使用反汇编工具和自定义工具分析微指令格式和控制流。
- 开发了一组微程序,以演示防御性和攻击性功能,包括CPU辅助插桩和通过微代码后门实现的远程代码执行。
- 映射了微代码更新流程,包括补丁RAM的作用、微代码更新头结构,以及用于完整性校验的加密签名的使用。
- 通过将自定义微代码更新注入测试系统并在指令级别观察行为变化,验证了其功能。
- 评估了微代码更新机制的安全模型,识别出诸如缺乏可验证的信任锚点以及依赖专有且未公开机制等弱点。
实验结果
研究问题
- RQ1AMD K8和K10处理器中微代码的实际结构和语义是什么?其运行时更新机制如何工作?
主要发现
- AMD K8和K10处理器中的微代码更新机制基于一个在每次重启后需要重新加载的易失性补丁RAM,因此若无固件持久化支持,更新无法持久保留。
- 微代码更新使用加密算法进行签名,但由于缺乏公开的验证机制,用户无法验证更新的完整性和真实性。
- 可以开发并注入自定义微代码更新,从而在处理器中启用新行为,例如CPU辅助插桩和硬件级代码注入。
- 恶意微代码更新可绕过操作系统和应用程序级别的隔离机制,实现从Web浏览器内部的远程代码执行和加密密钥恢复。
- 本文证明,若存储在BIOS/UEFI中,微代码后门可设计为在重启后仍保持隐蔽且持久存在,尤其在具备物理访问权限的情况下。
- 微代码更新缺乏公开文档和可验证的信任锚点,严重削弱了现代CPU的安全模型,使系统面临供应链攻击和制造后攻击的威胁。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。