KeyFrame內部研究專用

Black Hat USA 2025 | Dark Corners: How a Failed Patch Left VMware ESXi VM Escapes Open for Two Years

Black Hat·3月31日週二·34 min英文

三句話摘要

揭露 VMware ESXi xHCI USB 控制器 UAF 漏洞補丁失效兩年,並完整呈現 VM 逃逸 + 沙箱逃逸全鏈攻擊手法。 一個 2021 年的 VMware xHCI UAF 漏洞因補丁設計不完整而存活至 2024 年,證明對閉源虛擬化平台的補丁驗證不可只看 CVE 編號,需回溯根本攻擊路徑是否被徹底封堵。 補丁無效根源:VMware 2021 年針對 xHCI 的修復僅調整了函式執行順序,研究者發現無需新程式碼就能繞過,透過修改 slot 狀態再執行 disable slot 命令,仍可觸發相同的 UAF,代表漏洞本質上從未被修補。

重點整理

重點
  • 1

    補丁無效根源:VMware 2021 年針對 xHCI 的修復僅調整了函式執行順序,研究者發現無需新程式碼就能繞過,透過修改 slot 狀態再執行 disable slot 命令,仍可觸發相同的 UAF,代表漏洞本質上從未被修補。

  • 2

    受限 UAF 的創意利用:UAF 操作只能對偏移量 +0x205C 的四位元組做減法,研究者利用 xHCI 字串上下文哈希表(每元素 12 位元組,剛好對齊)作為 primitive,將字串上下文指標的低四位元組改寫為指向偽造物件,再藉堆疊重疊達到任意讀寫。

  • 3

    沙箱逃逸利用 CBT 驅動:ESXi 沙箱以 security domain 限制系統調用;VMX 進程對 CBT(Change Block Tracking)裝置有讀寫權,而 CBT 驅動的位圖更新函式缺乏邊界檢查。先擴大磁碟欄位讓位圖大小不同步,即可觸發 OOB Write,最終修改系統調用掩碼關閉沙箱。

  • 4

    生態系問題:VMware 漏洞賞金遠低於漏洞真實價值,導致研究者傾向透過 Tianfu Cup/Pwn2Own 披露,竹籬效應使漏洞生命週期人為延長,也促使更多漏洞流向地下市場被實際利用。

實用技巧與重點

乾貨
  • CVE 編號:CVE-2021-22053(原始漏洞)→ CVE-2024-22252(重新命名,本質相同);沙箱逃逸 CVE-2024-222F4
  • 漏洞類型:xHCI USB 控制器 Use-After-Free(UAF)+ CBT 驅動 Out-of-Bounds Write(OOB Write)
  • 受影響版本:VMware ESXi(2021–2024)
  • 攻擊面模型:2024 年前主要為 USB 相關(xHCI、UHCI、藍牙);2024 年起出現 SCSI、VMXNet3、VMCI
  • 利用原語
  • URB 物件(可控大小、分配/釋放、含 lens 成員)
  • xHCI string context hash map(每元素 = 8 位元組指標 + 4 位元組 ID = 12 位元組)
  • MO surface / GMR(VMware SVGA 圖形模型,用於堆噴射與佈局)
  • CBT bitmap 物件(bitmap pointer + bitmap count,可用作 r/w primitive)
  • 關鍵偏移量:UAF 操作作用於釋放堆塊 +0x205C;哈希表第二元素對齊 +0xC
  • 沙箱機制:ESXi 超過 100 個 security domain;使用 evaluation mask 控制系統調用類別;轉換限制透過鏈結串列實作
  • VMware Linux 版本 USB arbiter 未剥離符號,可提取 URB 等符號輔助研究
  • 利用結果:以 root 原始權限控制 ESXi 宿主機,可啟用 SSH、關閉防火牆
  • 披露時間軸:2021 年發現 → 2023 年 Tianfu Cup 演示 → 2023 年回報 → 2024 年重新命名 CVE → 2024 年 VMware 確認已在野利用

結論

結論

一個 2021 年的 VMware xHCI UAF 漏洞因補丁設計不完整而存活至 2024 年,證明對閉源虛擬化平台的補丁驗證不可只看 CVE 編號,需回溯根本攻擊路徑是否被徹底封堵。

完整解析

詳細

這場 Black Hat 演講由 Light Year 安全實驗室的 Yuho 與 Zumin 共同呈現,主題圍繞一個「補丁失效兩年」的真實案例。故事起點是 2021 年由 Qilin 實驗室發現、並在 Tianfu Cup 2021 披露的 CVE-2021-22053,一個位於 VMware ESXi xHCI USB 控制器中的 Use-After-Free 漏洞。漏洞的核心在於 `xci_clear_string_context` 函式與插槽上下文重寫的執行順序:在舊版本中,攻擊者可先修改插槽上下文,再觸發 `xci_clear_string_context`,導致管線(pipe)不被取消,URB 殘留但字串上下文已被釋放,後續手動清除管線時即觸發 UAF,對已釋放的字串上下文執行減法寫入。

VMware 在 2021 年的補丁僅重排了函式執行順序,但研究者在 2023 年備賽 Tianfu Cup 時重新審視這個補丁,發現它根本沒有真正阻斷攻擊路徑。由於補丁引入了一條新的取管線路徑,攻擊者只需改變插槽成員的狀態,讓新路徑同樣失敗;更關鍵的是,即便不靠新路徑,只要先修改插槽上下文清除特定端點的字串上下文,再執行 disable slot 命令清除所有端點,UAF 依然可被觸發。換言之,CVE-2021-22053 在 2021 至 2024 年間始終可被利用,直到 2023 年回報後才在 2024 年獲得新 CVE 編號 CVE-2024-22252。

在漏洞利用設計上,這個 UAF 極為受限:僅能對已釋放堆塊偏移量 +0x205C 做四位元組減法。研究者以創意解決此難題:xHCI 字串上下文哈希表的每個元素恰好是 8 位元組指標加 4 位元組 ID,共 12 位元組,使得第二個元素的低四位元組落在 +0xC 偏移處,完美對應 UAF 操作目標。透過先分配 GMR(大小 0x2050),再在 GMR 後緊接分配 URB,UAF 操作就會修改 URB 的 `actual_length` 欄位,實現越界讀取洩漏堆地址;接著利用哈希表佔位偽造字串上下文指標,結合堆疊重疊能力,最終透過偽造 VUSB device 物件中的函式指標完成控制流劫持,配合堆疊遷移 gadget 與 ROP 執行任意 shellcode,完成 VM 逃逸。

沙箱逃逸部分由 Zumin 講解。VM 逃逸後 VMX 進程仍受 ESXi 安全域(security domain)約束,無法直接操作宿主系統。ESXi 以 evaluation mask 控制每個域可使用的系統調用類別,轉換至其他域則需特權域授權或二進位檔具備特定安全屬性。研究者觀察到 VMX 進程對 CBT(Change Block Tracking)裝置擁有讀寫權限,CBT 驅動的位圖更新函式以使用者輸入的偏移量和 count 執行寫入,且邊界檢查基於欄位初始大小而非當前大小。攻擊者先向磁碟欄位寫入更多資料擴大欄位,但位圖大小不隨之更新,即可觸發 OOB Write。利用 whim 內核的超空間(semi-space)記憶體管理特性,透過覆蓋受害者位圖物件的 bitmap pointer 欄位(先清零再任意設置),實現核心任意讀寫 primitive,最終修改系統調用掩碼表,關閉沙箱限制,取得宿主機 root 完整控制權。演講末尾的 Demo 影片中,研究者從 Windows 客戶機執行漏洞利用程式,最終以 root 權限 SSH 登入 ESXi 宿主機。

關鍵時刻

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 的組織必須立即修補。