工程趣聞 2026 年 10 月 7 日

2026-10-07 Project Zero 談緊急修補:不等完整更新,先用四種手段止血

primary=https://projectzero.google/2026/10/emergency-patching.html

Project Zero 談緊急修補:不等完整更新,先用四種手段止血

Google Project Zero(Natalie Silvanovich) · 2026-10-06

當漏洞已經在傷害使用者,廠商不能再走「完整測試、完整發版」那條好幾週的路,而是要先用比正式 patch 更快的機制把洞堵住。Project Zero 在〈How to fix a bug in a fix〉裡,把這類緊急修補拆成四種做法,並指出 LLM 正在同時拉高攻擊者與防守者的漏洞發現與利用能力,廠商應該現在就把緊急應變的機制準備好。

原本的問題:正常修補流程太長

文章把一般修補流程分成六段:分流(triage)、開發修補、測試、夥伴審查、派送、啟用。其中最後的「啟用」有時還要重開機之類的額外動作,才能真正切換到新版軟體。

作者的判斷是:多數廠商的修補速度,瓶頸落在測試與派送兩段。測試不能省,因為沒測好的更新可能讓裝置「變磚」,連接收後續更新的能力都失去。所以緊急情況下的設計重點,是繞過這兩段,而不是壓縮它們。

四種緊急手段

手段做法文中例子
功能旗標事先測好開關兩種狀態,出事時只切旗標Apple 2019 年用旗標關閉 Group FaceTime;Meta 的 WebRTC 雙版本
過濾用可動態更新的規則擋掉特定攻擊路徑Android Intent Firewall(XML 規則)
替代通道不等整機更新,單獨更新元件Android APEX、以 dlopen 載入網路下發的函式庫
熱修補執行中替換函式,不必重啟Linux Livepatch、Windows hotpatch

功能旗標與過濾

功能旗標的價值在於測試可以提前做:每個旗標狀態都先測過,緊急時出貨的就不是沒測過的程式碼。Meta 的作法是同時帶兩個版本的 WebRTC 函式庫(dual stack),由旗標控制,出問題時能快速切換版本。

過濾則是針對特定漏洞,停用觸發它的某種用法。Android Intent Firewall 用可動態更新的 XML 規則,關掉特定 IPC 機制的特定用法;文中提到它近期被用來擋下 Android 錢包類應用裡第三方 SDK 的漏洞。作者提醒,新的過濾規則也要先測試,避免誤擋正常功能。

旗標:  feature_x = on  →  feature_x = off   (兩種狀態皆已預先測試)
過濾:  更新 XML 規則,停用特定 IPC 用法    (不改程式碼)

替代通道與熱修補的限制

Android APEX 讓元件可以比整套系統更新更快送達。有些應用程式也會用網路旗標加 dlopen 單獨更新函式庫。風險在驗證:文章警告,這種方式送來的函式庫,客戶端往往沒有充分驗證它確實來自廠商,驗證不足本身就可能引入嚴重漏洞。

熱修補(Linux Livepatch 在記憶體中替換核心函式,Windows hotpatch 對執行中的程序送新函式)免重啟,但有明確限制:無法處理需要改動「函式間共用的結構定義」的更新。

影響範圍

  • 維護自家更新機制的廠商:檢查你現有的旗標、規則推送、元件更新是否已能在一天內送出,並確認事先有測過各種狀態。
  • 自己用 dlopen 拉遠端函式庫的 App 團隊:補上來源驗證,否則緊急通道本身會變成新的攻擊面。
  • 核心或系統層維護者:先判斷修補是否涉及共用結構,涉及就無法靠熱修補,要另找手段。

文章未提供任何 CVE 編號或量化數據,結論也沒有說哪一種手段最好,而是主張組合使用,各自覆蓋不同類型的漏洞。

原始來源:Project Zero:How to fix a bug in a fix


End of article
0
Would love your thoughts, please comment.x
()
x