Skip to main content
QUICK REVIEW

[論文レビュー] Reverse Engineering x86 Processor Microcode

Philipp Koppe, Benjamin Kollenda|arXiv (Cornell University)|Oct 1, 2019
Advanced Malware Detection Techniques被引用数 18
ひとこと要約

この論文は、AMD K8およびK10 x86プロセッサのマイクロコードおよび更新メカニズムを逆解析し、CPU支援型インストルメンテーションを可能にするカスタムマイクロコード更新や、リモートコード実行や暗号攻撃を可能にする悪意あるマイクロコードトロイの木を展開できる可能性を示している。主な貢献は、市販(COTS)CPUにおけるマイクロコードの意味論と更新手順の最初の詳細な分析であり、重大なセキュリティ上の影響を明らかにするとともに、防御的および攻撃的用途の両方におけるハードウェアレベルのエクスプロイトの可能性を示している。

ABSTRACT

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プロセッサのマイクロコード更新メカニズムを逆解析した。
  • ファームウェアイメージからマイクロコードデータを抽出し、ディアセンブラおよびカスタムツールを用いてマイクロインstructionフォーマットおよび制御フローを解析した。
  • CPU支援型インストルメンテーションおよびマイクロコードトロイの木によるリモートコード実行を含む、防御的および悪意ある機能を示すマイクロプログラムのセットを開発した。
  • マイクロコード更新プロセスをマッピングし、パッチRAMの役割、マイクロコード更新ヘッダの構造、および整合性を保証する暗号的署名の使用を特定した。
  • テストシステムにカスタムマイクロコード更新をインジェクションし、命令レベルでの動作変化を観察することで、更新の機能性を検証した。
  • マイクロコード更新メカニズムのセキュリティモデルを評価し、検証可能な信頼の基盤が欠如していることや、非公開かつ非文書化されたメカニズムに依存していることといった弱みを同定した。

実験結果

リサーチクエスチョン

  • RQ1AMD K8およびK10プロセッサにおけるマイクロコードの実際の構造と意味論は何か。また、実行時における更新方法はどのようなものか。

主な発見

  • AMD K8およびK10プロセッサにおけるマイクロコード更新メカニズムは、リセット後に再読み込みが必要なバイトール・パッチRAMに依存しており、ファームウェアの永続性がなければ更新は非永続的である。
  • マイクロコード更新は暗号アルゴリズムで署名されているが、公開された検証メカニズムがないため、ユーザーは更新の整合性や真正性を検証できない。
  • カスタムマイクロコード更新を開発し、プロセッサにインジェクション可能であり、CPU支援型インストルメンテーションやハードウェアレベルのコードインジェクションといった新たな動作を可能にする。
  • 悪意あるマイクロコード更新は、オペレーティングシステムおよびアプリケーションレベルの隔離を回避でき、Webブラウザ内からもリモートコード実行や暗号鍵の回収が可能である。
  • 本論文では、物理的アクセスがある状況下でBIOS/UEFIに格納されたマイクロコードトロイの木が再起動後も存続し、検出されないままに残存可能であることを示している。
  • マイクロコード更新のための公開文書および検証可能な信頼の基盤が存在しないことにより、現代のCPUのセキュリティモデルが損なわれており、サプライチェーンおよび製造後攻撃のリスクが生じる。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。