KeyFrame內部研究專用

Black Hat Europe 2025 | Unveiling System Management Mode Memory Corruption Vulnerability Via Fuzzing

Black Hat·5月28日週四·42 min英文

三句話摘要

研究人員提出 SMMFuzz 工具,對 x86 最高權限層(Ring -2 / System Management Mode)的 SMI Handler 進行 Fuzzing,自動發現 BIOS 韌體中的記憶體損壞漏洞。 SMMFuzz 透過「相容層插入 + Fuzz 驅動初始化 + Handler 自動分群 + 野指標攔截重導向」的組合設計,將 Ring -2 SMM 韌體的 Fuzzing 效率提升至 4 倍,並在真實商業 BIOS 中找到可被利用的記憶體損壞漏洞,證明針對最高特權固件層的自動化漏洞挖掘是可行且高效的。 Ring -2 是整個系統的信任根:SMM 運行於 SMRAM,連 Ring-0(OS kernel)都無法存取,一旦取得 Ring -2 控制權,攻擊者可讀取 SMRAM 私有資料或任意寫入,繞過所有 OS 層防護。

重點整理

重點
  • 1

    Ring -2 是整個系統的信任根:SMM 運行於 SMRAM,連 Ring-0(OS kernel)都無法存取,一旦取得 Ring -2 控制權,攻擊者可讀取 SMRAM 私有資料或任意寫入,繞過所有 OS 層防護。

  • 2

    再宿主(Rehosting)是核心難題:廠商 SMM 模組為閉源二進位,依賴專有 DXE Protocol 與特定 HOB 資料,且模組之間透過全域變數和 Protocol 互相干擾,必須同時解決硬體模擬、初始化相依性與多 Handler 語義推斷三大問題。

  • 3

    智能分組策略提升 Fuzzing 效率:SMMFuzz 依「共享全域變數」和「共享 Protocol」兩項約束,將 SMI Handler 自動分群,以群為單位 Fuzzing,避免隨機排列組合浪費效能,同時覆蓋 Handler 間的交互觸發路徑。

  • 4

    野指標攔截解決巢狀結構推斷:面對 void pointer 層層巢狀的輸入結構,SMMFuzz 不做符號執行或靜態分析,而是攔截所有 SMRAM 外的記憶體存取,將其重導向至預先填充 Fuzz 資料的位址,自動實現指標語義推斷。

實用技巧與重點

乾貨
  • 架構資訊
  • x86 特權層:Ring 3(用戶空間)→ Ring 0(OS Kernel)→ Ring -2(SMM)
  • 觸發 SMI 的 IO Port:B2h、B3h(可由軟體寫入手動觸發)
  • 威脅模型假設
  • 攻擊者已控制 Ring 0 + Ring 3
  • 可隨時觸發 SMI(透過寫 IO Port 或插入惡意外設)
  • 目標:任意讀/寫 SMRAM,或直接提權至 Ring -2
  • SMMFuzz 三階段流程
  • Composing Phase:從廠商韌體提取 SMM 模組,嵌入自製基礎設施韌體形成 Composite Firmware
  • Initialization Phase:以 Fuzzing 驅動模組初始化函數,對 IO access、HOB data、專有 DXE Protocol 三類資料提供 Fuzz 輸入
  • Fuzzing Phase:按分群選取 Handler,填充輸入緩衝區,觸發 SMI,攔截記憶體存取,監控崩潰
  • Bug Oracle — 可偵測 5 類漏洞
  • SMM Callout(從 SMM 直接跳到 SMM 外部)
  • Unchecked Input
  • Double Fetch
  • Out-of-Bound Memory Access
  • Division by Zero
  • 評估數據
  • 代碼覆蓋率:比 state-of-the-art(2022/2023)高 4 倍
  • 真陽性率:高於 EFI Explorer(IDA Pro 靜態分析工具),誤報率大幅低於對比 Fuzzer
  • 模組載入率:約 50% 的廠商 SMM 模組與 Handler 被成功載入並註冊(不啟用 Fuzzing 初始化則更低)
  • Fuzzing 執行速度:超過 300 executions/sec,測試中發現 6 個 crash
  • 測試韌體廠商:Alienware、ASUS、HP 等多家筆電品牌
  • 真實案例:ASUS BIOS Double Fetch 漏洞
  • V0 從非 SMRAM 區域讀取(可被攻擊者控制)
  • V0 先被用作指標解引用,數值檢查後再次讀取作為函式指標陣列索引
  • 兩次讀取之間無鎖保護 → 典型 Double Fetch,可導致任意程式碼執行
  • 工具形式:Docker 映像(演講後公開),指令列操作:`compose` → `fuzz`,需指定 OVMF code/vars 檔案及 timeout
  • 研究單位:MPI Security and Privacy(德國)+ 上海交大 GoSSIP Lab

結論

結論

SMMFuzz 透過「相容層插入 + Fuzz 驅動初始化 + Handler 自動分群 + 野指標攔截重導向」的組合設計,將 Ring -2 SMM 韌體的 Fuzzing 效率提升至 4 倍,並在真實商業 BIOS 中找到可被利用的記憶體損壞漏洞,證明針對最高特權固件層的自動化漏洞挖掘是可行且高效的。

完整解析

詳細

現代 x86 系統除了大家熟知的 Ring 3(用戶態)與 Ring 0(核心態)之外,還存在一個更底層、被稱為 Ring -2 的 System Management Mode(SMM)。SMM 運行於一塊名為 SMRAM 的物理記憶體區域,處理器強制執行存取控管,即便擁有 Ring 0 權限的 OS kernel 也完全無法讀寫 SMRAM 的內容。進入 SMM 的唯一途徑是透過 System Management Interrupt(SMI),可由硬體週期性觸發,或由軟體寫入特定 IO Port(如 B2h)手動觸發。由於 SMM 已被整合進 UEFI 標準,廠商以模組化方式開發 SMM 應用:SMM Core 負責載入並呼叫各 SMM Module 的初始化函數,各模組再向 Core 註冊 SMI Handler,形成「初始化」與「SMI 處理」兩個生命週期。

正是因為 SMM 擁有系統最高權限,它成為高價值攻擊目標。研究者設定的威脅模型假設攻擊者已完全控制 Ring 0 和 Ring 3,可隨時透過寫 IO Port 或操控外設觸發 SMI,攻擊目標是利用 SMI Handler 中的記憶體損壞漏洞,實現對 SMRAM 的任意讀寫或直接提權至 Ring -2。然而,要對 SMI Handler 進行有效 Fuzzing 面臨三大挑戰:其一,廠商 SMM 模組為閉源二進位,難以完整模擬與再宿主;其二,SMM 模組依賴大量私有 DXE Protocol 與特定格式的 HOB 資料,若依賴未被滿足則初始化失敗;其三,Handler 的巢狀 void pointer 輸入結構難以推斷,且多個 Handler 可能透過全域變數或共享 Protocol 互相干擾控制流。

SMMFuzz 以三階段架構回應上述挑戰。Composing Phase 的核心思路是在廠商閉源 SMM 模組與模擬硬體之間插入一層自製的基礎設施韌體(infrastructure firmware),使其同時相容於兩側,實現部分再宿主。此基礎設施提供事件通知、資訊記錄(如 SMRAM 元資料、Handler 與 Protocol 的註冊情況)以及 SMI Handler 的 Fuzzing harness。Initialization Phase 以 Fuzzing 驅動模組初始化函數,對三類可能導致初始化失敗的資料(IO 存取回傳值、HOB 資料、專有 DXE Protocol 回傳值)提供 Fuzz 輸入,成功讓約 50% 的廠商模組與 Handler 被載入並註冊。Fuzzing Phase 則根據「共享全域變數」和「共享 Protocol」兩項依賴約束自動將 Handler 分群,以群為單位進行 Fuzzing;對於巢狀指標問題,SMMFuzz 攔截所有 SMRAM 外的記憶體存取,將其重導向至預填 Fuzz 資料的位址,隱式地完成指標語義推斷,無需符號執行或靜態分析。Bug Oracle 偵測除零、非法記憶體存取與 SMM Callout 三類直接崩潰事件,進而辨識 SMM Callout、Unchecked Input、Double Fetch、越界記憶體存取與除零五類漏洞。

評估結果顯示,SMMFuzz 在 Alienware、ASUS、HP 等多家品牌韌體上的代碼覆蓋率比 2022/2023 年最新對比工具高出 4 倍,真陽性率優於 EFI Explorer 靜態分析工具,且大幅降低誤報率,執行速度達每秒超過 300 次。研究者在 ASUS BIOS 中發現一個真實的 Double Fetch 漏洞:Handler 對來自非 SMRAM 的 V0 值先做邊界檢查,但隨後再次讀取同一位址作為函式指標陣列索引,兩次讀取之間缺乏同步保護,攻擊者可利用競態條件繞過檢查,實現任意程式碼執行。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。
Risky Bulletin: Expired credit cards can be used for malicious transactions
5 min
Web2 安全英文PODCAST8月24日

Risky Bulletin: Expired credit cards can be used for malicious transactions

Risky Business

  • 支付安全的非對稱風險:Visa卡利用未加密的卡片資料與NFC通訊,攻擊者可藉由中間人技術竄改過期日期進行交易,但MasterCard、美運卡與Discover的防護更完善,顯示不同發卡機構的安全架構存在明顯差異。
  • 國家級駭客活動的連鎖延伸:北韓Lazarus集團在2月單一事件已累積100名受害者,涵蓋大學、警察部門、媒體與醫療機構,伊朗駭客則針對基礎建設如電力系統發動破壞性攻擊,反映地緣政治在網路戰爭中的升溫。
  • AI加速漏洞生態的雙面刃:AI工具催生近2萬份漏洞概念驗證代碼發布,但同時也導致大量失效漏洞代碼氾濫,增加資安團隊甄別真實威脅的難度;Mayer Protocol遭攻擊事件中,駭客用AI鏈接六個無關的小漏洞完成盜竊170萬美元的攻擊。
SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware
5 min
Web2 安全英文PODCAST8月24日

SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware

SANS Stormcast

  • Microsoft EntraID 的遠端代碼執行漏洞已由微軟修補,初期報告顯示已遭利用但後來更正為未遭利用。這反映 Microsoft 在雲端軟體安全上的透明度提升,對漏洞採用與內部軟體相同的 CVE 編號和公告流程。
  • PowerShell 指令碼可用於驗證 MFA 部署完整性,特別是找出未啟用 MFA 的遺漏帳號。同時可以分析 EntraID 登入日誌中的異常行為,如風險係數評估和地理位置檢測,幫助組織快速識別可疑登入。
  • GitLab 的 GraphQL 代碼注入漏洞允許未認證攻擊者刪除或修改儲存庫,潛在導致供應鏈攻擊。已有公開概念驗證 (PoC) 存在,使用內部部署 GitLab 的組織必須立即修補。