軟體供應鏈安全,從每次建置記錄
您的軟體供應鏈與產品在 CI 建置中交會。CRACI 在安全的執行器上執行您的 GitHub Actions 作業,記錄作業引入的每個相依套件,控制每次建置能連線到哪裡,並持續追蹤您已出貨內容中的漏洞。
適用於 GitHub Actions 的安全執行器
只要將 runs-on 改為 craci,您的 GitHub Actions 作業就會在 CRACI 的執行器上執行,執行結果仍會顯示在 GitHub 中。每個作業都有專屬的隔離虛擬機器,執行於 Linux x86-64 或 ARM64,並託管於歐洲。憑藉更快的硬體、更短的排隊時間與快取,建置速度約為 GitHub 託管執行器的兩倍。
從每次建置記錄的 SBOM
CRACI 是記錄工具,而不是掃描工具。執行器上能辨識套件的 proxy,會看見作業從 npm、PyPI、RubyGems、Cargo、Go、Nix、OCI、apt、apk 與 Git 來源,以及 Yocto 與 OpenEmbedded 下載預設集引入的每個套件,包括從 CI 快取還原的套件。每個作業的 SBOM 都帶有完整度狀態,並可匯出為 CycloneDX 或 SPDX,內含遞移相依套件與每個元件宣告的授權。
控制建置能連線到哪裡
對外連線(egress)政策決定作業可以連線到哪些主機:預設拒絕或預設允許、24 個內建的軟體來源預設集、適用於套件登錄庫與 Git 的具型別自訂來源,以及明確的網路規則。政策會在作業開始前驗證,並採失效即封鎖(fail closed),違規時會觸發警示。遭入侵的相依套件或建置步驟,無法悄悄將資料傳送到您從未核准的主機。
為您出貨的內容提供來源證明
公開的 REST API 會針對每個作業回傳 SBOM、網路追蹤與來源證明(provenance),全部記錄自同一次建置。佐證資料直接來自建置本身,工作流程中不需額外步驟。
發布後的漏洞追蹤
每當有新漏洞公布,CRACI 都會持續重新評估您已出貨內容的 SBOM,並跨建置與儲存庫彙整發現結果。資安團隊會研判這些結果,並將每一項分派給負責修正的團隊。政策關卡可依發現結果或授權封鎖建置,支援 VEX,廠商 SBOM 會與您自己的建置一併監控,資產清冊檢視則會顯示哪些軟體版本部署在哪些產品上。
提供給客戶與稽核人員的佐證資料
客戶、稽核人員與法規越來越常要求每個版本提供 SBOM,以及漏洞處理方式的記錄。CRACI 可將 SBOM 匯出為 CycloneDX 或 SPDX,並包含其元件中發現的漏洞;公開的 REST API 則會回傳 SBOM、網路追蹤與來源證明。這些佐證資料同樣可支援歐盟 Cyber Resilience Act、NIS2、FDA SBOM 要求,以及 ISO 27001 的供應鏈控制措施。
供應鏈資安事件會引發的問題
當套件、CI action 或登錄庫遭到入侵時,最初的幾個小時都花在釐清您是否受到影響。以下是團隊會提出的問題,以及 CRACI 的建置記錄如何回答。
| 問題 | CRACI 如何回答 |
|---|---|
| 我們是否有任何建置引入了遭入侵的套件版本? | 每次建置的 SBOM 都列出作業實際下載的套件,因此您搜尋的是已記錄的建置,而不必重新掃描儲存庫。 |
| 我們有哪些產品與版本受到影響? | 受監控的 SBOM 會持續重新評估,資產清冊檢視則會將軟體版本對應到其部署的產品。 |
| 是否有建置步驟可能將機密傳送到某處? | 每個作業的網路追蹤都會記錄其建立的連線,而對外連線政策會在連線到政策以外的主機之前就加以封鎖。 |
| 這份 SBOM 是否完整到可以交付? | 每個作業的 SBOM 都會標示其完整度:Complete、Complete with connections、Incomplete、Unavailable 或 Not recorded。 |
| 由誰負責修正?我們能否證明已妥善處理? | 發現結果會經過研判並分派給負責的團隊,SBOM 可匯出為 CycloneDX 或 SPDX,並包含其元件中發現的漏洞。 |
CRACI 涵蓋建置及其出貨內容。程式碼掃描、機密掃描與可達性分析仍由您的應用程式安全工具負責。目前支援 GitHub Actions,其他 CI 系統已列入產品藍圖。
軟體供應鏈安全常見問題
涵蓋範圍、為何應在 CI/CD 中處理,以及 CRACI 的定位
什麼是軟體供應鏈安全?
軟體供應鏈安全保護的是從第一個 commit 到版本發布之間,進入您軟體的一切:開源相依套件、基礎映像檔、建置工具、第三方 CI actions、CI 管線本身,以及您出貨的建置產物。這代表要知道這些組成是什麼、控制它們的來源,並證明每個版本包含了哪些內容。
為什麼要在 CI/CD 中確保軟體供應鏈安全?
發布建置是解析、下載並封裝相依套件的地方。正式環境的建置並不等於筆電上的建置:版本範圍、可變動的標籤與快取,都可能讓它引入不同的內容。在發布建置執行時所做的記錄,是唯一能可靠反映實際出貨內容的記錄,而建置執行器正是您能控制建置可連線範圍的地方。
CRACI 與供應鏈安全掃描工具有何不同?
掃描工具是在事後讀取檔案:manifest、lockfile、原始碼或已完成的二進位檔。CRACI 是您 GitHub Actions 作業的執行器,因此能在建置進行時觀察建置,並記錄每個作業實際引入的套件,包括從 CI 快取還原的套件。每份 SBOM 都會標示自身的完整度,對外連線政策控制建置能連線到哪裡,API 則會回傳 SBOM、網路追蹤與來源證明。
CRACI 會取代我的 GitHub Actions 工作流程嗎?
不會。CRACI 取代的是執行器,而不是 GitHub Actions。您只需將 runs-on 改為 craci,工作流程、觸發條件與執行記錄都會保留在 GitHub 中。
CRACI 支援哪些 CI 系統與平台?
目前支援 GitHub Actions;其他 CI 系統(包括 GitLab CI 與 Jenkins)已列入產品藍圖。執行器為 x86-64 與 ARM64 上的 Linux,Windows 與 macOS 已列入產品藍圖。
CRACI 是否提供 SAST、機密掃描或可達性分析?
不提供。CRACI 負責記錄並控制建置、追蹤您已出貨內容中的漏洞,並產生佐證資料。掃描您自己程式碼中的缺陷或機密,以及可達性分析,屬於應用程式安全工具的工作。
我的建置資料儲存在哪裡?
CRACI 託管於歐洲的歐洲裸機基礎架構上,資料預設保留 180 天,Enterprise 方案可自訂保留期限。CRACI 不會儲存您的原始碼。CRACI 已通過 ISO 27001 認證,詳細資訊請參閱 Trust Center。