xoreaxeaxeax/skitter-creek-bath-salts

Unlocking _everything_ on the CPU with DRAM scrambling

解決的問題

本專案提供一種方法,透過操作記憶體控制器的位址轉換,繞過特定CPU的硬體級記憶體保護。它允許存取DRAM中受保護的區域——例如平台安全處理器(PSP)、系統管理模式(SMM)和CPU微碼——這些區域通常對作業系統核心也完全不可見。

工作原理

該工具透過翻轉DRAM控制器轉換暫存器中的位元,修改記憶體階層的底層(MCT/DCT層)。這種操作使物理位址對應關係「義大利麵化」或打亂,產生可存取受保護記憶體單元的別名,而不會觸發保護標準物理位址的安全閘門。

由於精確的打亂矩陣通常未公開或因型號而異,本專案使用Z3 SMT求解器重建轉換矩陣。透過在記憶體中放置哨兵值並觀察其在打亂後出現在何處,工具收集資料點以求解線性映射(GF(2)線性代數),該映射將一致視圖位址轉換為義大利麵化視圖別名。

適用對象

對CPU架構、硬體漏洞與固件安全感興趣的資安研究人員與底層系統工程師,特別是使用AMD Family 16h CPU的使用者。

主要亮點

  • 繞過硬體屏障:在安全原語生效的層級之下操作,可存取SMRAM與PSP私人記憶體等記憶體區域。
  • 線性代數方法:使用GF(2)線性代數與Z3,數學推導出記憶體打亂變換。
  • 低階操作:使用精確的組合語言級定時與快取控制(clflush、mfence、lfence),在不導致系統當機的情況下打亂並還原記憶體對應。
  • 廣泛適用性:雖然已在AMD Family 16h上測試,但位址轉換變換的基本概念適用於ARM與RISC-V等其他架構。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案