3.0 KiB
3.0 KiB
Verifiable SBOM-to-VEX Chain
Module
Attestor
Status
IMPLEMENTED
Description
VEX proof integrator links VEX statements to SBOM components with component ref extraction, SBOM linkage statements, and VEX attestation predicates for chain verification.
Implementation Details
- VEX Proof Integrator:
src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Generators/VexProofIntegrator.cs(with.Helpers,.Metadata) -- integrates VEX proofs with SBOM component references, embedding proof metadata (proof_ref, proof_method, proof_confidence) into VEX verdicts. - VEX Verdict Proof Payload:
Generators/VexVerdictProofPayload.cs-- payload containing VEX verdict with proof references linking back to SBOM components. - Component Ref Extractor:
Linking/ComponentRefExtractor.cs(with.Resolution,.Spdx) -- extracts component references from SBOMs (CycloneDX bom-ref, SPDX SPDXID) for cross-linking with VEX statements. - SBOM Extraction Result:
Linking/SbomExtractionResult.cs-- result of extracting component references from an SBOM document. - SBOM Linkage Payload:
Statements/SbomLinkagePayload.cs-- payload for SBOM-to-VEX linkage statements, binding SBOM digest to VEX document reference. - VEX Attestation Predicate:
Predicates/VexAttestationPredicate.cs-- attestation predicate for VEX statements with proof chain references. - VEX Verdict Summary:
Predicates/VexVerdictSummary.cs-- summary of VEX verdicts per component/CVE. - VEX Document Reference:
Predicates/VexDocumentReference.cs-- reference to a VEX document by digest and URI. - VEX Status Counts:
Predicates/VexStatusCounts.cs-- counts of VEX statuses (affected, not_affected, fixed, under_investigation). - SBOM Reference:
Predicates/SbomReference.cs-- reference to an SBOM document for linkage. - VEX Verdict Statement:
Statements/VexVerdictStatement.cs-- in-toto statement wrapping the VEX verdict. - Tests:
__Tests/StellaOps.Attestor.ProofChain.Tests/
E2E Test Plan
- Extract component refs from a CycloneDX SBOM via
ComponentRefExtractorand verify bom-ref IDs are captured for all components - Extract component refs from an SPDX SBOM via
.Spdxand verify SPDXID references are captured - Create an
SbomLinkagePayloadlinking an SBOM digest to a VEX document reference and verify the chain is valid - Integrate a VEX proof via
VexProofIntegratorand verify theVexVerdictProofPayloadcontains proof_ref, proof_method, and proof_confidence - Build a
VexAttestationPredicatewith multiple component verdicts and verify each references the correct SBOM component ref - Verify SBOM-to-VEX chain: given an SBOM with 5 components and VEX with 3 affected, verify
VexStatusCountsshows 3 affected and 2 not_assessed - Create a VEX verdict statement and verify it is a valid in-toto statement with SBOM linkage metadata
- Attempt to link a VEX to an SBOM with mismatched component refs and verify the integrator detects the mismatch