供應鏈完整性
重點摘要
標題為「重點摘要」的區段NextPDF 的供應鏈控制措施作用於兩個環節:其一是對每個變更相依性的 pull request 與每個版本標籤執行的 CI 閘門;其二是釋出工作流程,其組態涵蓋來源證明產生、無金鑰簽署與 SBOM 產出。
| 控制措施 | 類型 |
|---|---|
建置的 CycloneDX 1.7 SBOM | CI 閘門,硬性 |
| 對建置輸入作出承諾的 in-toto 陳述 | CI 閘門,硬性 |
| SHA-256 相依性指紋與釘選基準的差異比對 | CI 閘門,硬性 |
| OpenVEX 對照相依性安全通報政策的一致性檢查 | CI 閘門,硬性 |
| 跨測試素材的確定性檢查 | CI 檢查,盡力而為 |
釘選的 slsa-github-generator 來源證明產生 | 工作流程組態——釋出工作流程 |
Sigstore cosign 無金鑰簽署搭配 Rekor 透明度日誌 | 工作流程組態——釋出工作流程 |
產出 CycloneDX 1.7 與 SPDX 2.3 SBOM | 工作流程組態——釋出工作流程 |
每夜對剖析器與寫入器路徑執行的 php-fuzzer 矩陣 | 排程 CI |
CI 閘門
標題為「CI 閘門」的區段每一個涉及相依性的 pull request 與每一個版本標籤都會執行:
| 檢查 | 內容 | 閘門 |
|---|---|---|
| 盤點 | 產出建置的 CycloneDX 1.7 SBOM | 硬性 |
| 建置輸入紀錄 | 產出對建置輸入作出承諾的 in-toto 陳述 | 硬性 |
| 相依性完整性 | 將 SHA-256 位元組指紋與釘選基準做差異比對 | 硬性 |
| VEX 一致性 | 要求相依性安全通報政策中的每一筆項目,都必須在儲存庫的 OpenVEX v0.2.0 文件中有對應陳述 | 硬性 |
| 可重現性 | 對測試素材執行確定性檢查 | 盡力而為 |
相依性完整性閘門將相依性樹的 SHA-256 位元組指紋,與釘選於儲存庫中的基準做差異比對,不倚賴套件的中介資料。
釋出工作流程組態
標題為「釋出工作流程組態」的區段來源證明——工作流程組態
標題為「來源證明——工作流程組態」的區段釋出工作流程釘選官方的 slsa-github-generator 可重用工作流程——其組態會在隔離、
短生命週期的建置器中產生 in-toto 來源證明——並設定 slsa-verifier 就地對產生器的輸出執行驗證。
簽署與透明度——工作流程組態
標題為「簽署與透明度——工作流程組態」的區段釋出工作流程為產出物套件組態 Sigstore cosign 無金鑰簽署,並將透明度日誌記錄至
Rekor。無金鑰簽署會從工作流程的 OIDC 身分
(https://token.actions.githubusercontent.com)衍生短效憑證,因此這條釋出簽署路徑的組態不含任何長效的產出物簽署金鑰。
SBOM——工作流程組態
標題為「SBOM——工作流程組態」的區段釋出工作流程組態雙份 SBOM 產出——一份 CycloneDX 1.7 文件與一份 SPDX 2.3 文件。
模糊測試
標題為「模糊測試」的區段每夜執行的 php-fuzzer 矩陣,連同 AST/結構樹測試載具,持續演練剖析器與寫入器路徑。