2026 年每日通報的 CVE 數量比前一年多 131%。

漏洞

什麼是零時差漏洞?

零時差漏洞是在廠商或維護者推出修正之前,攻擊者就已知曉甚至正在利用的資安缺陷。在修正出現之前,所有執行受影響程式碼的系統都暴露在風險中,而修補無法填補這個缺口。以下說明這對以開源打造的軟體代表什麼,以及事件發生時該如何應變。

更新日期

零時差漏洞、漏洞利用與攻擊

這三個詞經常被混用,但它們描述的是不同的東西:

  • 零時差漏洞:缺陷本身,廠商尚不知情或尚無修正。
  • 零時差漏洞利用:利用該缺陷的程式碼或技術。
  • 零時差攻擊:將漏洞利用實際用於攻擊目標。

一旦廠商推出修正,該缺陷就不再是零時差漏洞,而是已知漏洞,通常稱為 n-day。這會開啟第二場競賽:攻擊者研究修補程式,並掃描尚未套用的系統,因此未修補的已知漏洞,可能造成與原本零時差漏洞同樣大的損害。

您相依套件中的零時差漏洞

現代應用程式中的大部分程式碼都來自開源套件,而其中多數是遞移相依套件:由其他套件引入,而不是由您的團隊挑選。其中任何一個出現零時差漏洞,就等於您的產品出現零時差漏洞。

Log4Shell(CVE-2021-44228)是最知名的例子。它於 2021 年 12 月揭露,能讓掌控某則記錄訊息的攻擊者透過 Apache Log4j 2 執行任意程式碼,並獲得 CVSS 最高分 10.0。對多數團隊而言,困難的不是修正,而是修正之前的問題:我們的哪些應用程式包含 log4j-core,又是哪些版本?Log4j 通常是相依套件的相依套件,許多團隊花了好幾天才查清楚。

供應鏈中的零時差漏洞不一定是程式錯誤。2024 年 3 月,Andres Freund 注意到 SSH 登入耗用過多 CPU 後,在 xz 5.6.0 與 5.6.1 版中發現了後門(CVE-2024-3094)。惡意套件版本是常見的一種供應鏈攻擊,運作方式也相同:最先安裝受感染版本的團隊,例如遭Shai-Hulud npm 蠕蟲攻擊的團隊,面對的是任何資安公告或掃描器都還不知道的攻擊。

零時差漏洞衝擊相依套件時如何應變

  1. 找出它在哪裡。列出包含受影響元件的每一個應用程式、映像檔與版本,包括以遞移相依套件形式存在的情況。這需要每次建置都有準確的 SBOM。鎖定檔(lockfile)會漏掉在套件管理工具之外擷取的相依套件,例如安裝腳本下載的程式碼,或容器映像檔的作業系統層。
  2. 釐清暴露期間。哪些建置交付了有漏洞的版本?從什麼時候開始?這會告訴您要調查什麼、要通報什麼。
  3. 加以圍堵。有修正或因應措施時立即套用,並在該漏洞取得 CVE 後,阻止新的建置交付有漏洞的版本。請參閱CVE 修補。
  4. 檢查是否遭到利用。尋找暴露期間該缺陷曾被用來攻擊您的跡象,並輪替它可能接觸到的所有機密。

我們受影響了嗎?一文詳細說明了前兩個步驟。

能防禦沒有人知道的零時差漏洞嗎?

靠修補不行,靠掃描器也不行,因為兩者都要以缺陷已知為前提。在揭露之前有效的做法,是限制攻擊者利用其發現的缺陷能做到的事:

  • 最小權限。只給每個系統與每個 CI 作業它需要的存取權與機密。
  • 對外連線控管。封鎖連往系統不需要之主機的對外連線,讓執行起來的漏洞利用無法將資料傳送給攻擊者。在 CI 建置中,這是少數即使您是新惡意套件的第一個受害者也依然有效的控管措施之一。請參閱GitHub Actions 的對外連線政策。
  • 縱深防禦。層層部署控管措施,讓單一缺陷不會打開所有門戶。
  • 日後可搜尋的紀錄。零時差漏洞揭露時,您的應變速度取決於是否清楚自己建置並交付了什麼。

CRACI 如何協助

CRACI 在自家執行器上執行您的 GitHub Actions 作業,並在每次建置發生時加以記錄:

  • 建置時 SBOM 列出每個作業實際引入的套件,包括以 lockfile 為基礎的工具會漏掉的隱藏相依套件,讓您能根據實際建置的內容回答「它在哪裡?」。請參閱建置時 SBOM。
  • 建置歷程顯示過去的每一次建置及其 SBOM,以及哪些建置包含有漏洞的相依套件(無論直接或遞移),讓您知道受影響的期間。
  • 政策關卡可以封鎖包含特定 CVE 的建置,讓新的建置不會再次交付有漏洞的版本。
  • 設為預設拒絕的對外連線政策會封鎖連往建置不需要之主機的連線,即使是在前所未見的攻擊期間也一樣。

零時差漏洞:常見問題

什麼是零時差漏洞?

在廠商或維護者發布修正之前,攻擊者就已知曉甚至正在利用的資安缺陷。這個名稱計算的是防禦方已有多少天可以修補它:零天。

零時差漏洞、漏洞利用與攻擊有什麼差別?

漏洞是缺陷本身。漏洞利用是利用該缺陷的程式碼或技術。攻擊則是將漏洞利用實際用於攻擊目標。

零時差漏洞何時不再是零時差漏洞?

當修正推出時。從那時起,它就是已知漏洞,有時稱為 n-day,風險則轉移到尚未套用修正的系統。

掃描器能偵測零時差漏洞嗎?

無法靠查詢偵測。漏洞掃描器是將元件與已發布的資安公告比對,而零時差漏洞還沒有任何公告。掃描器或 SBOM 提供的,是公告一出現就能立即搜尋的資產清冊。

如何得知零時差漏洞是否影響我的軟體?

在一份準確記錄每次建置與每個版本內容(包括遞移相依套件)的資產清冊中,搜尋受影響的元件與版本。接著釐清哪些版本交付了它、從什麼時候開始,就能知道暴露期間。

掌握有漏洞的套件交付到了哪裡

在 CRACI 上執行一個 GitHub Actions 工作流程,取得它引入之每個套件的 SBOM 紀錄,下一則資安公告發布時即可搜尋。

預約示範