Integrità della supply chain
In sintesi
Sezione intitolata “In sintesi”I controlli di supply chain di NextPDF operano in due punti: i gate CI eseguiti su ogni pull request che modifica le dipendenze e su ogni tag di versione, e il workflow di rilascio, che configura la generazione della provenance, la firma keyless e l’emissione delle SBOM.
| Controllo | Tipo |
|---|---|
SBOM CycloneDX 1.7 della build | Gate CI, bloccante |
| Dichiarazione in-toto che vincola gli input di build | Gate CI, bloccante |
| Confronto delle impronte SHA-256 delle dipendenze con una baseline fissata | Gate CI, bloccante |
| Verifica di coerenza OpenVEX rispetto alla policy sugli advisory delle dipendenze | Gate CI, bloccante |
| Verifica di determinismo tra le fixture | Verifica CI, best effort |
Generazione della provenance con slsa-github-generator a versione bloccata | Configurazione di workflow — workflow di rilascio |
Firma keyless Sigstore cosign con registrazione di trasparenza su Rekor | Configurazione di workflow — workflow di rilascio |
Emissione di SBOM CycloneDX 1.7 e SPDX 2.3 | Configurazione di workflow — workflow di rilascio |
Matrice php-fuzzer notturna sui percorsi di parser e writer | CI pianificata |
Gate CI
Sezione intitolata “Gate CI”Ogni pull request che tocca le dipendenze, e ogni tag di versione, esegue:
| Verifica | Cosa fa | Gate |
|---|---|---|
| Inventario | Emette una SBOM CycloneDX 1.7 della build | Bloccante |
| Registrazione degli input di build | Emette una dichiarazione in-toto che vincola gli input di build | Bloccante |
| Integrità delle dipendenze | Confronta le impronte byte SHA-256 con una baseline fissata | Bloccante |
| Coerenza VEX | Richiede che ogni voce della policy sugli advisory delle dipendenze abbia una dichiarazione corrispondente nel documento OpenVEX v0.2.0 del repository | Bloccante |
| Riproducibilità | Esegue una verifica di determinismo sulle fixture | Best effort |
Il gate di integrità delle dipendenze confronta le impronte byte SHA-256 dell’albero delle dipendenze con una baseline fissata nel repository, indipendentemente dai metadati dei pacchetti.
Configurazione del workflow di rilascio
Sezione intitolata “Configurazione del workflow di rilascio”Provenance — configurazione del workflow
Sezione intitolata “Provenance — configurazione del workflow”Il workflow di rilascio vincola a una versione fissa il workflow riutilizzabile canonico
slsa-github-generator, configurato per generare la provenance in-toto all’interno di
un builder isolato ed effimero, e configura slsa-verifier per l’esecuzione inline
sull’output del generatore.
Firma e trasparenza — configurazione del workflow
Sezione intitolata “Firma e trasparenza — configurazione del workflow”Il workflow di rilascio configura la firma keyless Sigstore cosign per il bundle
degli artefatti, con registrazione di trasparenza su Rekor. La firma keyless deriva un
certificato a breve durata dall’identità OIDC del workflow
(https://token.actions.githubusercontent.com), quindi questo percorso di firma dei
rilasci è configurato senza alcuna chiave di firma degli artefatti a lunga durata.
SBOM — configurazione del workflow
Sezione intitolata “SBOM — configurazione del workflow”Il workflow di rilascio configura l’emissione di una doppia SBOM — un documento
CycloneDX 1.7 e un documento SPDX 2.3.
Fuzzing
Sezione intitolata “Fuzzing”Una matrice php-fuzzer notturna, insieme a un harness su AST e albero della struttura,
esercita i percorsi di parser e writer.