DRAM操作でCPU全保護機能を解除する手法公開
原題: Spaghettifying DRAM
なぜ重要か
DRAMコントローラーの物理アドレス変換という低レイヤーの脆弱性は、OS・ファームウェア・セキュリティ機能を横断して影響するため、ハードウェアセキュリティ研究における重要な知見となる。
セキュリティ研究者xoreaxeaxeaxが、DRAMスクランブリングを利用してCPUの保護機能を網羅的に解除するツール「skitter-creek-bath-salts」をGitHubで公開した。AMD Family 16h世代のCPUを対象に、PSP・SMM・C6 DRAM・マイクロコードのロックを解除できることを実証している。
GitHubユーザーxoreaxeaxeaxは、DRAMコントローラーの物理アドレス変換テーブルを改ざんすることで、CPU上のあらゆる保護機能を解除できるツール「skitter-creek-bath-salts」を公開した。
本ツールはメモリ階層の最下層を操作し、物理DRAMのアドレス変換を書き換える。これによりプラットフォームメモリをスクランブルし、カーネルからも不可視のDRAMカーブアウト(保護領域)を露出させる。アドレス変換が崩れると、それに依存するセキュリティプリミティブも同時に機能を失う仕組みだ。
解除できる対象として、AMD Platform Security Processor(PSP)、System Management Mode(SMM)、C6 DRAMリージョン、CPUマイクロコードが挙げられている。
開発・検証はAMD Family 16h世代のCPUを対象に行われた。この世代はDRAMコントローラーの変換レジスタがデータシートに記載されており、かつロックできない構造であることが明示されている最後の世代とされる。AMD Family 17h以降ではこの情報がデータシートから省かれており、同じ手法が直接適用できるかは不明だが、研究者は基礎となる変換処理の考え方はARM、RISC-Vなど他アーキテクチャにも共通すると述べている。
リポジトリにはanalysis、data、examples、kernel、userspace各ディレクトリが含まれており、実装と利用方法(USAGE.md)が公開されている。スター数は483、フォーク数は55に達している(公開時点)。