xoreaxeaxeax/skitter-creek-bath-salts

Unlocking _everything_ on the CPU with DRAM scrambling

何を解決するか

このプロジェクトは、メモリコントローラーのアドレス変換を操作することで、特定のCPUにおけるハードウェアレベルのメモリ保護を回避する方法を提供します。これにより、オペレーティングシステムのカーネルでさえも通常見えない、プラットフォームセキュリティプロセッサ(PSP)、システム管理モード(SMM)、CPUマイクロコードなどの保護されたDRAM領域にアクセスできるようになります。

動作方法

このツールは、MCT/DCTレイヤー(メモリ階層の最下層)を変更し、DRAMコントローラーの変換レジスタ内のビットを反転させます。これにより物理アドレスマッピングが「スパゲッティ化」またはスクランブルされ、標準の物理アドレスを保護するセキュリティフェンスをトリガーせずに、保護されたメモリセルに到達できるエイリアスが生成されます。

正確なスクランブル行列はしばしば非公開またはモデルごとに異なるため、プロジェクトはZ3 SMTソルバーを使用して変換行列を再構成します。メモリにセンチネル値を配置し、スクランブル後にその値がどこに再出現するかを観察することで、線形写像(GF(2)線形代数)を解くためのデータポイントを収集します。この線形写像は、整合的なビューのアドレスをスパゲッティ化されたビューのエイリアスに変換します。

対象ユーザー

AMD Family 16h CPUを扱っている、CPUアーキテクチャ、ハードウェア脆弱性、ファームウェアセキュリティに興味を持つセキュリティ研究者およびローレベルシステムエンジニア。

特徴

  • ハードウェアフェンスの回避: セキュリティプリミティブが適用されるレベルより下で動作することで、SMRAMやPSPのプライベートメモリなどのメモリ領域にアクセス可能。
  • 線形代数アプローチ: GF(2)線形代数とZ3を用いて、メモリスクランブル変換を数学的に導出。
  • ローレベル操作: clflush、mfence、lfenceなどのアセンブリレベルの正確なタイミング制御とキャッシュ制御を用いて、システムのクラッシュを引き起こさずにメモリマッピングをスクランブルおよび復元。
  • 広範な適用性: AMD Family 16hでのテストを経たものの、アドレス変換変換の基本的な概念はARMやRISC-Vなどの他のアーキテクチャにも適用可能。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト