ความถูกต้องครบถ้วนของห่วงโซ่อุปทาน
ภาพรวมโดยสังเขป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสังเขป”มาตรการควบคุมห่วงโซ่อุปทานของ NextPDF ทำงานที่สองจุด: เกต CI ที่รันในทุก pull request ที่เปลี่ยนแปลง dependency และทุก version tag และเวิร์กโฟลว์การปล่อยรุ่น ซึ่งกำหนดค่าการสร้าง provenance การลงนามแบบไร้กุญแจ และการปล่อย SBOM
| มาตรการควบคุม | ประเภท |
|---|---|
SBOM แบบ CycloneDX 1.7 ของบิลด์ | เกต CI, บังคับ |
| คำแถลง in-toto ที่ผูกมัดกับอินพุตของบิลด์ | เกต CI, บังคับ |
| diff ลายนิ้วมือ SHA-256 ของ dependency เทียบกับ baseline ที่ตรึงไว้ | เกต CI, บังคับ |
| การตรวจสอบความสอดคล้องด้วย OpenVEX เทียบกับนโยบายคำแนะนำด้านช่องโหว่ของ dependency | เกต CI, บังคับ |
| การตรวจสอบความเป็นเชิงกำหนดข้ามชุด fixture | การตรวจ CI, best-effort |
การสร้าง provenance ด้วย slsa-github-generator ที่ตรึงเวอร์ชันไว้ | การกำหนดค่าเวิร์กโฟลว์ — เวิร์กโฟลว์การปล่อยรุ่น |
การลงนามแบบไร้กุญแจด้วย Sigstore cosign พร้อมการบันทึกความโปร่งใสลง Rekor | การกำหนดค่าเวิร์กโฟลว์ — เวิร์กโฟลว์การปล่อยรุ่น |
การปล่อย SBOM แบบ CycloneDX 1.7 และ SPDX 2.3 | การกำหนดค่าเวิร์กโฟลว์ — เวิร์กโฟลว์การปล่อยรุ่น |
เมทริกซ์ php-fuzzer รายคืนบนเส้นทาง parser และ writer | CI ตามกำหนดเวลา |
ทุก pull request ที่แตะต้อง dependency และทุก version tag จะรัน:
| การตรวจ | สิ่งที่ทำ | เกต |
|---|---|---|
| บัญชีรายการ | ปล่อย SBOM แบบ CycloneDX 1.7 ของบิลด์ | บังคับ |
| บันทึกอินพุตของบิลด์ | ปล่อยคำแถลง in-toto ที่ผูกมัดกับอินพุตของบิลด์ | บังคับ |
| ความสมบูรณ์ของ dependency | diff ลายนิ้วมือระดับไบต์ SHA-256 เทียบกับ baseline ที่ตรึงไว้ | บังคับ |
| ความสอดคล้องของ VEX | กำหนดให้ทุกรายการในนโยบายคำแนะนำด้านช่องโหว่ของ dependency ต้องมีคำแถลงที่ตรงกันในเอกสาร OpenVEX v0.2.0 ของที่เก็บโค้ด | บังคับ |
| ความสามารถในการทำซ้ำ | รันการตรวจสอบความเป็นเชิงกำหนดข้ามชุด fixture | best-effort |
เกตความสมบูรณ์ของ dependency จะ diff ลายนิ้วมือระดับไบต์ SHA-256 ของทรี dependency เทียบกับ baseline ที่ตรึงไว้ในที่เก็บโค้ด โดยไม่ขึ้นกับ metadata ของแพ็กเกจ
การกำหนดค่าเวิร์กโฟลว์การปล่อยรุ่น
หัวข้อที่มีชื่อว่า “การกำหนดค่าเวิร์กโฟลว์การปล่อยรุ่น”Provenance — การกำหนดค่าเวิร์กโฟลว์
หัวข้อที่มีชื่อว่า “Provenance — การกำหนดค่าเวิร์กโฟลว์”เวิร์กโฟลว์การปล่อยรุ่นตรึง reusable workflow slsa-github-generator ฉบับหลักไว้ ซึ่งกำหนดค่าให้สร้าง provenance แบบ in-toto ภายในบิลเดอร์ที่แยกตัวโดดเดี่ยวและเป็นแบบชั่วคราว (ephemeral) และกำหนดค่าให้ slsa-verifier รันแบบ inline เทียบกับเอาต์พุตของเครื่องกำเนิด
การลงนามและความโปร่งใส — การกำหนดค่าเวิร์กโฟลว์
หัวข้อที่มีชื่อว่า “การลงนามและความโปร่งใส — การกำหนดค่าเวิร์กโฟลว์”เวิร์กโฟลว์การปล่อยรุ่นกำหนดค่าการลงนามแบบไร้กุญแจด้วย Sigstore cosign สำหรับชุด artifact พร้อมการบันทึกความโปร่งใสลง Rekor การลงนามแบบไร้กุญแจได้ใบรับรองอายุสั้นมาจากอัตลักษณ์ OIDC ของเวิร์กโฟลว์ (https://token.actions.githubusercontent.com) ดังนั้นเส้นทางการลงนามการปล่อยรุ่นนี้จึงถูกกำหนดค่าไว้โดยไม่มีคีย์ลงนาม artifact ที่มีอายุยืน
SBOM — การกำหนดค่าเวิร์กโฟลว์
หัวข้อที่มีชื่อว่า “SBOM — การกำหนดค่าเวิร์กโฟลว์”เวิร์กโฟลว์การปล่อยรุ่นกำหนดค่าการปล่อย SBOM สองรูปแบบ — เอกสาร CycloneDX 1.7 และเอกสาร SPDX 2.3
Fuzzing
หัวข้อที่มีชื่อว่า “Fuzzing”เมทริกซ์ php-fuzzer รายคืน พร้อมด้วย harness แบบ AST/structure-tree ทดสอบเส้นทาง parser และ writer