從 Guest 記憶體映射定位 Host 上的 Firecracker 程序
攻擊的第一步是建立從 Guest 虛擬位址到 Host 實體位址的對應關係。研究團隊在 Guest 記憶體頁面中放置一個可識別的隨機數(nonce),並利用已知的 Guest 實體位址(GPA)作為輸入,搜尋 Host 實體記憶體範圍中的候選 EPT(Extended Page Tables)根節點。
透過遍歷 EPT 條目並驗證目標頁面是否包含該 nonce,團隊成功將 Guest 頁面映射到特定的 Host 實體位址(HPA)。接著,他們反向搜尋 Host 的原生頁表,尋找將該 HPA 映射回虛擬位址的結構,從而恢復出 Firecracker 程序的頁全域目錄(PGD)根節點。
取得 PGD 後,團隊進一步在該地址空間中識別 ELF 執行檔映像,並透過檢查 Firecracker write(2) 包裝函式的已知位元組序列來驗證目標程序。由於 ASLR(位址空間配置隨機化)的存在,他們計算出載入偏移量(load bias),從而能夠定位運行中程序的特定程式碼位置。
識別並劫持正在執行的 vCPU 執行緒狀態
Firecracker 的每個虛擬 CPU(vCPU)在主機上對應一個執行緒,該執行緒透過 ioctl(vcpu_fd, KVM_RUN, 0) 系統呼叫進入核心模式以執行 Guest 程式碼。當需要處理使用者空間事件時,執行緒會返回到 Firecracker 程序。
研究團隊利用已恢復的 PGD 和載入偏移量,在主機記憶體中搜尋符合特定條件的 pt_regs(暫存器儲存結構)框架。驗證條件包括:系統呼叫標識符必須匹配 ioctl、請求參數必須為 KVM_RUN、指令指標(RIP)必須指向 Firecracker 中已驗證的 ioctl 續行位址,以及堆疊指標必須能透過恢復的 PGD 進行翻譯。
經過多重檢查排除過期或錯誤的堆疊內容後,團隊鎖定了一個唯一的候選框架,該框架對應於當前正在執行 Guest 的 vCPU 執行緒。這使得攻擊者能夠精確地存取並修改該執行緒從核心返回使用者空間時將使用的暫存器狀態。
透過修改暫存器強制主機執行指定指令
為了證明控制權的轉移,團隊選擇讓 Firecracker 程序將其標準錯誤輸出(stderr)寫入一個可識別的標記字串 "N8V23M2\n"。他們在 Firecracker 私有的使用者空間堆疊上儲存了該字串以及臨時呼叫序列所需的返回位址。
攻擊者修改了儲存的暫存器框架,將指令指標(RIP)設為 Firecracker write 包裝函式的位址,並設定參數:RDI 為檔案描述符 2(stderr),RSI 為標記字串的虛擬位址,RDX 為長度 8。同時,堆疊指標(RSP)被調整以指向包含返回序列的臨時堆疊區域。
為了確保執行後能正確恢復,團隊在返回序列中放置了 xor eax,eax; ret 指令的地址,這會將返回值清零(模擬 KVM_RUN 的正常返回行為),然後再跳轉回原始的 ioctl 續行位址。Guest 透過寫入序列埠觸發 vCPU 執行緒從 KVM_RUN 返回,核心恢復修改後的暫存器,Firecracker 隨即執行 write 呼叫並輸出標記。
驗證主機端執行結果與系統穩定性
主機端的監控記錄顯示 Firecracker 的 stderr 確實輸出了預期的 8 位元組標記字串,證明 Guest 成功迫使主機程序執行了指定操作。同時,Firecracker 程序(PID 2936)在觸發後仍然存活,Guest 的 SSH 連線保持響應,系統運行時間未受影響。
研究團隊執行了一次不包含記憶體修改的驗證步驟,確認所有暫存器、程式碼簽名和堆疊幾何結構的檢查均通過,且臨時堆疊位置沒有殘留標記。這表明攻擊在執行後成功恢復了原始狀態,未造成持久性的系統損壞或錯誤。
測試環境使用 Firecracker v1.16.1、主機核心 7.0.0-1011-aws 和 Guest 核心 6.18.44+。由於 Firecracker 是直接以 root 權限透過 systemd-run 啟動並使用 taskset 綁定 CPU,且未啟用 jailer(即未應用命名空間隔離或 seccomp 過濾),因此攻擊獲得的是主機上的完全 root 執行能力。
社群討論與安全影響範圍
社群評論指出,此文章並非披露新漏洞,而是對先前已公開的 PwnEscape 漏洞(CVE-2026-99999)在 Firecracker 環境下的具體利用進行技術細節補充。有使用者提到,若使用標準的生产配置(包含 jailer、權限降級和 seccomp),攻擊者獲得的特權將受到限制,需另行評估其影響。
另有評論建議採用如 Nova Microhypervisor 等更簡潔的虛擬化架構,認為複雜的 Linux 核心作為 Hypervisor 層可能帶來較大的攻擊面。此外,有服務供應商表示其依賴 Firecracker VMs 的服務(如 ClickBench playground)可作為此類逃逸漏洞的概念驗證目標。




