功能
政策關卡:在進入正式環境前攔下漏洞
掃描工具會告訴您有漏洞,政策關卡則會攔下含有該漏洞的建置。CRACI 的關卡依據每次建置實際拉進來的內容紀錄做出判斷,因此有漏洞的套件不會只因為沒人及時看到警示,就進入正式環境。
更新日期
為什麼只有警示還不夠
多數資安工具都是事後才回報。發現結果進到儀表板,有人進行分級研判,工單轉給負責的團隊,而在這段期間版本發布仍持續推進。如果發現結果被忽略,或掃描根本沒看到該套件,那麼在任何人做出決定之前,漏洞就已經進入正式環境。
政策關卡也能即時攔下建置,趕在版本發布繼續推進之前。
關卡能攔下什麼
| 規則 | 結果 |
|---|---|
| 建置中的發現結果 | 含有您政策所排除之發現結果的建置會遭到封鎖。 |
| 特定 CVE | 一旦您的團隊決定某個 CVE 不得出貨,含有該 CVE 的建置就會遭到封鎖。 |
| 已知的惡意版本 | 已有公開 CVE 的惡意版本(例如 xz)會被標記,並可用相同方式封鎖。 |
| 授權 | 授權政策規則可以封鎖引入您已排除之授權的建置。 |
關卡的效果,取決於它看得到什麼
以 lockfile 掃描為基礎的關卡,只能封鎖 lockfile 列出的內容。CRACI 能看到進入每次建置的流量,因此它的關卡是依據作業實際拉進來的內容運作:
- 各層級的遞移相依套件。請參閱 遞移相依套件。
- 隱藏的相依套件,例如安裝腳本下載的程式碼、在建置時下載內容的 Rust 建置腳本,以及容器建置的基礎映像檔。
- 從 CI 快取還原的套件,這些套件會被記錄並標示為來自快取。
CRACI SBOM 中的每個元件都確實存在於建置中,因此關卡絕不會依據僅憑推測得出的套件運作。背後的原因請參閱建置時 SBOM。
關卡與對外連線政策各司其職
| 風險 | 由什麼攔下 |
|---|---|
| 含有您已排除之已知 CVE 的相依套件 | 政策關卡 |
| 您已排除的授權 | 政策關卡 |
| 連線到建置不需要的主機 | 設定為預設拒絕的對外連線政策 |
| 尚無資安公告的新惡意套件 | 在資安公告發布前不會被標記。不過,設定為預設拒絕的對外連線政策仍可阻止它將您的機密傳送到建置不需要的主機。 |
當新的 CVE 出現時
- CRACI 重新評估受監控的 SBOM,並標記受影響的項目。
- 您的資安團隊進行分級研判,並將其轉給負責修正的團隊。
- 建置歷史會顯示哪些建置含有該漏洞,也就能得知您受影響的時間有多長。
- 負責團隊發布修正,政策關卡則讓該 CVE 不再出現在之後的建置中。
修正仍由您負責,關卡則確保修正後不再復發。請參閱 漏洞追蹤。
關卡不做的事
- 不做可達性分析。關卡的判斷依據是套件是否在建置中,而不是您的程式碼是否呼叫了有漏洞的函式。
- 不做惡意軟體偵測。關卡由資安公告驅動,因此全新的惡意套件不會被它攔下。
- 不做程式碼掃描。SAST 與機密掃描在設計上就不在範圍內,而且有許多優秀的工具可與 CRACI 搭配使用。
政策關卡:常見問題
什麼是政策關卡?
一種在建置違反您的政策時將其攔下的規則。關卡不是回報問題、等人之後處理,而是讓建置無法繼續推進。
政策關卡與掃描工具的警示有何不同?
警示要靠有人及時採取行動,關卡則會自行運作。CRACI 的關卡也依據建置實際拉進來的內容紀錄運作,因此能抓到 lockfile 掃描永遠看不到的套件。
我可以只封鎖某一個特定 CVE 嗎?
可以。政策關卡能封鎖含有特定 CVE 的建置,讓團隊已做出決定的漏洞不會在之後的建置中再次出現。
關卡可以封鎖特定授權嗎?
可以。每個被記錄的套件都帶有其宣告的授權,授權政策規則可依授權封鎖建置。
關卡能攔下新的惡意軟體嗎?
單靠關卡無法做到。已有公開 CVE 的已知惡意版本會像其他漏洞一樣被標記,關卡可以封鎖含有它的建置。新的惡意套件在資安公告發布前不會被標記,在這段期間限制損害的,是設定為預設拒絕的對外連線政策。
哪些 CI 系統可以使用政策關卡?
在 CRACI 執行器上的 GitHub Actions。其他 CI 系統已列入產品藍圖。