GhostLock:存在於所有主要 Linux 發行版長達 15 年的堆疊 UAF(Use-After-Free,釋放後使用)漏洞 (★ 109 分)
GhostLock(CVE-2026-43499,公開弱點編號)是 NebuSec 透過 VEGA 發現的 Linux 核心漏洞,影響自 Linux 2.6.39 到 7.1-rc1 前的所有主要發行版,已於 2026 年 4 月修補。它屬於堆疊 UAF(Use After Free,釋放後使用;物件生命週期結束後仍被存取),不需要特殊核心設定、特權或 user namespace(使用者命名空間);只要 CONFIG_FUTEX_PI=y,非特權本機攻擊者就可能用一般執行緒系統呼叫取得指向核心堆疊的懸空指標,進一步進行受限制的指標寫入、劫持函式表,最後達成本機權限提升(LPE, Local Privilege Escalation)與容器逃逸。研究團隊把漏洞做成 97% 穩定的利用鏈,並在 Google kernelCTF(核心漏洞獎勵競賽)獲得 92,337 美元獎金;未套用修補的系統應升級到最新 LTS(Long-Term Support,長期支援)核心。
漏洞根因出在 rtmutex(real-time mutex,即時互斥鎖)與 PI futex(Priority Inheritance futex,優先權繼承的 futex,同步機制)互動中的生命週期假設錯誤。remove_waiter() 原本假設要清理的等待者就是正在執行的執行緒,因此會清掉該執行緒的 pi_blocked_on;但在 Requeue-PI 的 proxy path 中,FUTEX_CMP_REQUEUE_PI 會替另一個睡眠中的執行緒移動 waiter,此時正在執行的是 requeue 執行緒,不是實際 waiter。當三個 futex 與三個執行緒形成相依迴圈並觸發 -EDEADLK 復原路徑時,核心會清掉錯誤執行緒的 pi_blocked_on,讓真正的 waiter 保留指向自己舊堆疊框架的懸空指標;待該 futex 系統呼叫結束回到使用者空間後,後續 sched_setattr() 等路徑仍可沿著這個指標走進已失效的核心堆疊。這個錯誤也避開了 lockdep(核心鎖定驗證器),因為 lockdep 只檢查是否持有 pi_lock,沒有確認那把鎖是否屬於正確的 task。
文章的利用流程相當完整:先用 prefetch(預取指令)的計時側通道洩漏核心位址空間隨機化(KASLR, Kernel Address Space Layout Randomization)基底與 physmap(實體記憶體直接對映區)基底;接著用 GhostLock 留下 dangling rt_mutex_waiter,再透過 PR_SET_MM_MAP 將受控 auxv 內容放回相同深度的核心堆疊,偽造 rt_mutex_waiter。之後利用紅黑樹刪除流程取得一次受限制的指標寫入,把 inet6_protos[IPPROTO_UDP] 改成指向 CPU entry area(CEA,CPU 進入區)的直接對映位址;攻擊者再把 CEA 重新噴成假的 inet6_protocol,送出 IPv6 UDP loopback 封包觸發 handler,取得控制流程劫持(CFH, Control-Flow Hijack)。最後利用短 ROP(Return-Oriented Programming,回傳導向程式設計)鏈執行 DirtyMode,改寫 core_pattern sysctl(核心參數介面)的 mode 權限位元,讓 /proc/sys/kernel/core_pattern 變成非特權程序可寫,藉由 core dump helper 以 root 身分執行攻擊者程式。緩解面向包括套用修補、啟用 RANDOMIZE_KSTACK_OFFSET 降低堆疊重用穩定度,以及用 STATIC_USERMODE_HELPER 封住這條 DirtyMode 後段路徑。
Hacker News 討論首先聚焦在術語與影響範圍:不少讀者詢問 UAF 是什麼,資安背景讀者則補充 use-after-free 是低階 C/C++ 漏洞中非常常見的類型。也有人指出標題若補上 LPE,較能讓讀者立即判斷這是本機權限提升,而非遠端漏洞;不過容器逃逸讓風險仍然顯著,尤其對把 Docker 等容器誤當成強安全邊界的環境更是提醒。對 92,337 美元獎金的看法則分歧:有人認為這對單一漏洞已是高額,也有人覺得以 15 年影響範圍、所有主要 Linux 發行版與容器逃逸能力來看偏低,推測企業通常對遠端利用鏈給出更高獎勵。
另有留言提到 Android 與瀏覽器串接風險。有讀者測試 IonStack 示範在多台 Android 裝置上出現開機循環或關機,NebuSec 成員回應目前主要測試 Pixel 10,GitHub 上已有其他人送出 PR 協助支援更多裝置。也有留言提及 Firefox IonMonkey JIT(Just-In-Time,即時編譯器)型別混淆漏洞,指出若瀏覽器漏洞能先取得程序執行能力,再串接 GhostLock 這類核心 LPE,攻擊路徑可能從隨機網站擴大到裝置層級接管。整體討論的共識是:即使 GhostLock 不是遠端漏洞,它的長期存在、低權限觸發條件與穩定容器逃逸能力,仍使修補優先度非常高。
👥 26 則討論、評論 💬
https://news.ycombinator.com/item?id=48834309