Black Hat USA 2025 | Dark Corners: How a Failed Patch Left VMware ESXi VM Escapes Open for Two Years
三句話摘要
揭露 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 只會顯示它真正能驗證的內容。

