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

相依套件

容器掃描

容器掃描會檢查容器映像檔中的已知漏洞、過時套件與有風險的設定。映像檔將您的應用程式、基礎作業系統以及兩者之間的一切打包在一起,因此掃描涵蓋的範圍遠超過您自己的相依套件。它讀取的也是已完成的映像檔,這限制了它能得知映像檔是如何產生的程度。

更新日期

容器掃描如何運作

  1. 解開映像檔。掃描工具讀取映像檔的各個層,但不會執行它們。
  2. 列出內容。它讀取作業系統的套件資料庫與應用程式的資訊清單,例如複製進映像檔的 package-lock.json。
  3. 比對資料。它將套件與來自各發行版和資安公告資料庫的漏洞資料進行比對。
  4. 檢查設定。部分工具也會標示以 root 身分執行、或有機密殘留在某一層等問題。

應在哪裡執行掃描

階段 能帶來什麼 限制
CI,在映像檔建置之後 在映像檔推送之前讓建置失敗 只是當天資安公告的快照
映像檔登錄庫 有新資安公告時重新掃描已儲存的映像檔 在映像檔發布之後才發現問題
Kubernetes 准入控制 在部署時封鎖未經掃描或未通過的映像檔 需要政策,以及處理例外的方式
執行階段 顯示目前正在執行哪些映像檔,以及載入了哪些內容 需要在您的叢集上安裝代理程式

容器掃描工具

  • 開源:Trivy 與 Grype 是常見的免費選擇,兩者都能輕鬆整合進 CI。
  • 內建於登錄庫與平台:Docker Scout 與各大雲端映像檔登錄庫都提供掃描功能。
  • 商業平台:Snyk 與 Anchore 加上了政策、報表與工作流程。

如何減少掃描結果

  • 從較小的基礎映像檔開始。精簡版或 distroless 映像檔包含的套件較少,適用的資安公告也較少。
  • 定期重新建置。基礎映像檔會持續修補,三月時沒有問題的映像檔,現在未必如此。
  • 使用多階段建置。編譯器與建置工具不應留在最終映像檔中。
  • 以 digest 釘選基礎映像檔。標籤可能在您不知情時改變,digest 則不會。
  • 排定優先順序。許多發現尚無修正,或位於您的應用程式從未使用的套件中。請參閱 如何排定漏洞優先順序。

同樣的做法也適用於映像檔以外的範圍:如何減少漏洞雜訊 依序整理了適用於您所有掃描工具的方法。

容器掃描看不到什麼

  • 編譯後的程式碼。映像檔中的 Go 或 Rust 執行檔只帶有有限的中繼資料,掃描工具必須自行推斷其中包含了什麼。
  • 沒有套件紀錄的檔案。以 curl 加入或直接複製進某一層的軟體,在套件資料庫中沒有任何紀錄。
  • 建置使用過又遺留的內容。多階段建置會捨棄產生映像檔的工具。如果其中某個工具遭到入侵,最終映像檔中不會留下任何跡象。
  • 它從何而來。掃描描述的是映像檔,而不是產生它的建置過程。

深入了解請參閱 Docker 映像檔 SBOM 遺漏了什麼,各種選項則請參閱 最佳 SBOM 工具。

近期的實例請參閱 PHP2Shell:官方 php 映像檔從原始碼編譯 PHP,因此執行環境沒有套件紀錄,必須逐一詢問每個映像檔的版本。

掃描映像檔與記錄建置

對於並非您自行建置的映像檔,以及叢集與設定,掃描工具是合適的工具。對於您自行建置的映像檔,CRACI 採取不同的做法。作為您的 GitHub Actions 執行器,它能看到進入建置的所有內容,包括基礎映像檔及其作業系統層,因此它記錄的是實際放進去的內容,而不是事後推斷。之後,它會在新漏洞公布時持續檢查這些 SBOM。

CRACI 不會掃描並非您自行建置的映像檔、叢集、VM 映像檔或設定錯誤。Trivy 可以,因此這些項目請繼續使用 Trivy。請參閱 CRACI 與 Trivy 比較。

容器掃描:常見問題

什麼是容器掃描?

這是檢查容器映像檔中已知漏洞、過時套件與有風險設定的過程,通常不需要執行映像檔。

應該在什麼時候掃描容器映像檔?

在 CI 中映像檔建置完成後掃描,並在有新資安公告時於登錄庫中再次掃描。只掃描一次,留下的只是一份很快就會過時的快照。

最好的免費容器掃描工具是哪一個?

Trivy 與 Grype 是使用最廣泛的免費選擇。兩者都能在 CI 中執行,並涵蓋作業系統與應用程式套件。

映像檔掃描與 SBOM 有什麼不同?

SBOM 列出映像檔中有哪些內容,掃描則檢查這些內容是否有已知問題。許多掃描工具會先建立 SBOM,再將它與資安公告比對。

為什麼我的容器映像檔有這麼多漏洞?

主要來自基礎映像檔,它帶入了作業系統的套件。使用較小的基礎映像檔並定期重新建置,就能消除大部分漏洞。

容器掃描工具能讀取編譯後的執行檔嗎?

部分可以。Go 與 Rust 執行檔可能帶有一些相依套件的中繼資料,但許多編譯後的程式碼幾乎無法提供掃描工具線索,因此它只能推斷其中包含了什麼。

看看您的映像檔裡放了什麼

在 CRACI 上建置一個映像檔,並將記錄下來的 SBOM 與您的容器掃描工具回報的結果進行比較。

預約示範