セキュリティ研究者のChristopher Domas氏は、特定の旧世代AMDプロセッサにおいて厳重に保護されたDRAM領域を露出させることが可能なメモリコントローラ攻撃を公表しました。
オープンソースプロジェクトskitter-creek-bath-saltsとともに公開されたこの研究は、AMD Family 15hおよび16h世代のシステムを対象としています。これらのシステムでは、メモリアドレス変換を制御する構成レジスタがロックできない場合があるとされています。
この手法は従来型のソフトウェア権限バイパスではなく、Rowhammerとは異なるものです。DRAM内でビット反転を引き起こす代わりに、物理アドレスとメモリ上で選択されるバンク・ランク・行・列の座標との間の最終的なマッピングを変更します。
これにより、DRAMの一時的な代替ビューが作られ、特権ソフトウェアがアクセス可能なアドレスが、保護された領域と同じメモリセルに解決されるようになります。
この攻撃が重要である理由は、プラットフォームのセキュリティ制御が通常、メモリコントローラよりも上位のレイヤーで動作している点にあります。ページテーブル、IOMMU、ファームウェアの保護領域、チップセットロック、プロセッサ保護機構などが、ある物理アドレスへのアクセスを許可するかどうかを判断します。
Domas氏の手法はこれらの制御機構の下層で動作し、プラットフォームが物理アドレスを受け入れた後に適用される変換処理そのものを書き換えます。
その結果、セキュリティチェック上は一見正当に見えるリクエストであっても、コントローラがそれをDRAM内の意図しない場所へ振り向けることが可能になります。このプロジェクトでは、この処理を「スパゲッティ化(spaghettifying)」と呼んでいます。
コントローラのDRAMスウィズルおよびアドレス変換の挙動を変更することで、研究者は通常のメモリと保護領域との間にエイリアス(別名参照)を作り出します。アクセス後には通常の構成に復元されるため、稼働中のプラットフォームへの影響は最小限に抑えられます。
この研究では、アドレス変換をGF(2)上の線形演算としてモデル化しています。これにより、観測されたエイリアスのペアから、コヒーレントなアドレスビューとスクランブルされたアドレスビューの間のマッピングを導出できます。
これにより攻撃者は、システムメモリを闇雲にスクランブルするのではなく、標的となる保護領域に対してアクセス可能なエイリアスを計算で導き出すことができます。Domas氏は、Family 16h世代のテストマシン上で、通常はカーネルレベルのコードからもアクセスできないメモリに対してこの手法を実証しました。
報告された事例には、fTPMコードを含むPlatform Security Processorのメモリ、SMIハンドラを保持するSystem Management Modeメモリ、そしてプロセッサのコンテキストをDRAM上に保持するC6電源状態の保存領域などが含まれます。
この研究ではさらに、コアがC6アイドル状態から復帰する際に使用されるマイクロコードパッチデータのDRAM上のコピーも特定されています。
この発見は、プロセッサの復帰処理を支えるデータの完全性に関する懸念を提起するものです。実証されたエイリアス手法は、プラットフォームのハードウェアによって保護されているはずのメモリを読み取り、上書きすることが可能だからです。
AMDはセキュリティ情報AMD-SB-7068において、この根本的な問題を認めています。同社によれば、特定のFamily 15hおよび16hプロセッサには、システムメモリのアドレス変換を担うメモリコントローラの構成レジスタが含まれており、これがロックできない場合があるとしています。
また、AMDは影響を受けるプロセッサファミリーがすでにセキュリティサポートの終了(end of security support)を迎えており、セキュリティアップデートは提供されないとも述べています。実際の悪用には重要な制約があります。攻撃者はあらかじめroot権限または管理者権限を保有している必要があるという点です。
この前提条件により、初期侵入手段としての有用性は大きく限定されます。しかし、侵害後の攻撃活動、悪意ある管理者によるシナリオ、ファームウェア研究、そしてローカルでの特権侵害がハードウェアで保護された機密情報の露出につながってはならない環境において、この脆弱性は依然として重要な意味を持ちます。
今回の公表は、現行のZenベースのAMD製CPUやIntel製チップ、あるいはARM・RISC-Vシステムが同様の弱点を抱えていることを証明するものと解釈すべきではありません。
現代のメモリコントローラの多くには類似したアドレス変換の処理段階が存在しますが、各実装は個別に検証する必要があります。
旧世代のAMD Family 15hまたは16hのハードウェアを使用している組織は、影響を受ける機器を特定し、特権アクセスを厳格に制限したうえで、サポート対象外システムを隔離し、ハードウェアによるメモリ分離がセキュリティ要件となる環境については置き換えを計画することが求められます。
ANY.RUNのブラウザ内データ検査で、検知・調査・対応をより高速に。フィッシングの可視性を高め、SOCを強化してMTTRを短縮しましょう
翻訳元: https://cyberpress.org/new-dram-scrambling-attack/