セキュリティ研究者のChristopher Domas氏は、AMDのDRAMコントローラ設定における脆弱性を実証する概念実証プロジェクト「skitter-creek-bath-salts」を公開しました。この脆弱性は、ハードウェアで強制されるメモリ分離を侵害する可能性があります。
Hacking& Cracking
この手法はAMD Family16hプロセッサ上でテストされたもので、メモリコントローラ層のアドレス変換動作を操作することで、通常はオペレーティングシステム、カーネル、さらにはring-0コードからも保護されているデータへのアクセスを可能にします。
この研究は、物理メモリアドレッシングの最終段階、すなわちMemory Controller Technology/Data Controller Technology(MCT/DCT)パイプラインを具体的に標的としています。
ソフトウェアやファームウェアによる保護は一般的に物理アドレスを使ってアクセスを制限しますが、メモリコントローラは最終的にそれらのアドレスをチャネル、ランク、バンク、行、列といったDRAM座標に変換します。
Domas氏の研究は、コントローラのレジスタを変更することで、上位レベルの保護によってすでにアクセス制御が適用された後でも、この変換処理を書き換えられることを示しています。
新たなDRAMスクランブリング攻撃
この実証の核心にあるのは、メモリコントローラのアドレス再マッピング設定を切り替えるDRAM「スクランブリング」操作です。プロジェクトのドキュメントによると、たった一つの設定変更によって、あるアドレスがプラットフォームの他の部分が想定しているのとは異なる物理DRAMの位置に解決されるようになる可能性があります。

これにより、メモリの一時的な代替ビューが生成されます。保護された領域は正規の物理アドレスを通じてはアクセス不能なままですが、注意深く計算されたエイリアスを使えば、元のアドレスに適用されているアクセス制御を回避しつつ、同じ実体のDRAMセルにアクセスできてしまいます。
この概念実証は、変更されたメモリ状態にとどまる時間を最小限に抑えることでシステムの安定性を維持することを目指しています。具体的には、割り込みを無効化し、関連する変換およびキャッシュ状態を準備した上で、コントローラのマッピングを変更し、狙った読み取りまたは書き込み操作を実行してから、元の設定を復元するという流れです。
この手法は本質的に不安定なものですが、従来のメモリ保護よりも下位層にある脆弱性が、それらの保護が前提としている仮定そのものを無効化しうることを明確に示しています。
このプロジェクトでは、線形代数とZ3 SMTソルバーを用いて、通常のメモリマッピングとスクランブルされたメモリマッピングの間の関係を再構築しています。
研究者たちは、異なるコントローラ設定の下で同一のDRAM位置に解決される物理アドレスのペアを収集し、それをもとに変換行列を導出します。
この行列が導出されると、保護されたアドレスと、操作されたマッピング下でアクセス可能なエイリアスとの間を変換する仕組みとして機能します。このプロジェクトには、エイリアスを特定し、指定したメモリ領域を読み書きするためのツールも含まれています。
Domas氏は、以下を含む複数の高権限領域への潜在的なアクセスを実証しています。
- AMD Platform Security Processor(PSP)メモリ。fTPM機能に関連するメモリを含む。
- System Management Mode(SMM)メモリ。通常はSMRAM内で保護されているSMIハンドラのコードを含む。
- C6アイドル状態の保存領域。アーキテクチャ上のプロセッサ状態を格納しうる。
- マイクロコードパッチの保存領域。CPUの低電力状態の間、ロードされたマイクロコードのコピーがDRAM上に保持される場合がある。
マイクロコードに関する側面は特に注目に値します。ドキュメントによると、C6保存領域からマイクロコードパッチ本体を復元することが可能であり、コアが状態を復元する前であれば、同じエイリアシングの仕組みを使ってそのDRAM上のコピーを改変できる可能性があるとされています。
影響範囲
公開されている概念実証は、AMD Family 16hシステムを対象に特化して開発・テストされたものです。このFamily 16hは、関連するDRAMコントローラの変換レジスタが公開ドキュメントに記載されている中で、それらがロック可能であることを示す記述がない、AMDにとって最後の世代となります。
この研究は、より新しいAMDプロセッサ、Intel製システム、ARMデバイス、あるいはRISC-Vプラットフォームが同様の形で脆弱であるかどうかまでは確認していません。
しかし、この研究はより広範なアーキテクチャ上の懸念を提起しています。信頼できる実行技術やファームウェアで保護された領域は、最終的にはDRAMのアドレス変換に依存しているという点です。
もし攻撃者がこの最終的な変換層を再プログラムできるとすれば、その上位層で実装されている保護機構が、実際にアクセスされているDRAMの位置と一致しなくなってしまう可能性があります。
Securityconsulting services
防御側にとって、この研究はメモリコントローラの設定をブートプロセスの早い段階でロックすること、ファームウェアのレジスタ制御を監査すること、そして文書化されていないメモリコントローラの挙動を単なる信頼性の問題としてではなく、セキュリティ境界における潜在的な欠陥として扱うことの重要性を浮き彫りにしています。
新たなフィッシングやマルウェアが貴社を侵害する前に阻止しましょう。 世界15,000のSOCからのライブインテリジェンスを統合
翻訳元: https://gbhackers.com/new-dram-scrambling-attack-unlocks-amd-cpu-psp-smm/