Supply Chain Security: Proteggere la Catena del Software
La supply chain security nel software si riferisce alla protezione dell'intero processo di creazione, distribuzione e consumo del software. Gli attacchi alla supply chain sono in crescita esponenziale: compromettere un singolo componente nella catena permette di colpire migliaia di organizzazioni a valle.
L'attacco SolarWinds del 2020 e l'incidente XZ Utils del 2024 hanno dimostrato quanto la supply chain sia vulnerabile. In questo articolo esploreremo gli standard e gli strumenti per proteggere la catena del software: SBOM per l'inventario dei componenti, Sigstore per la firma degli artifact e il framework SLSA per la verifica della provenienza.
Cosa Imparerai
- Cos'è un SBOM e perchè e fondamentale
- Standard SBOM: CycloneDX e SPDX
- Sigstore: firma e verifica degli artifact
- SLSA framework per la supply chain integrity
- Generazione automatica di SBOM nella pipeline CI/CD
- Verifica della provenienza degli artifact
SBOM: Software Bill of Materials
Un SBOM (Software Bill of Materials) e un inventario completo di tutti i componenti che compongono un software: librerie, framework, tool e le loro versioni esatte. Come una lista ingredienti per il cibo, l'SBOM permette di sapere esattamente cosa c'e dentro il software.
L'SBOM e diventato un requisito legale in molti contesti: l'Executive Order 14028 degli Stati Uniti lo richiede per i fornitori del governo federale, e le normative europee (NIS2, Cyber Resilience Act) lo stanno rendendo obbligatorio per i prodotti digitali venduti nell'UE.
Standard SBOM: CycloneDX vs SPDX
Confronto Standard SBOM
| Caratteristica | CycloneDX | SPDX |
|---|---|---|
| Mantenuto da | OWASP | Linux Foundation |
| Focus | Security e risk management | Compliance licenze |
| Formati | JSON, XML, Protobuf | JSON, RDF, Tag-Value |
| VEX support | Nativo | Tramite estensioni |
| Adozione | Community security, DevSecOps | Enterprise, governo |
Generare SBOM con Syft
# Installare Syft
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh
# Generare SBOM da un'immagine Docker (CycloneDX)
syft myapp:latest -o cyclonedx-json > sbom-cyclonedx.json
# Generare SBOM in formato SPDX
syft myapp:latest -o spdx-json > sbom-spdx.json
# Generare SBOM dal filesystem locale
syft dir:. -o cyclonedx-json > sbom-project.json
# Generare SBOM da un lock file
syft file:package-lock.json -o cyclonedx-json > sbom-deps.json
SBOM nella Pipeline CI/CD
# .github/workflows/sbom.yml
name: SBOM Generation
on:
push:
branches: [main]
tags: ["v*"]
jobs:
sbom:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t myapp:






