Sécurité de la Chaîne d'Approvisionnement Logicielle : Ne Faire Confiance à Rien que Vous n'Avez Pas Construit
SolarWinds. Log4Shell. Codecov. Les cinq dernières années ont démontré que la chaîne d'approvisionnement logicielle est la surface d'attaque la plus sous-protégée de l'ingénierie moderne. La sécuriser requiert un changement : passer de la confiance par défaut à la vérification de provenance à chaque étape.
Taxonomie des Vecteurs d'Attaque
Vecteurs d'Attaque de la Chaîne d'Approvisionnement
├── Code Source
│ ├── Compte développeur compromis
│ ├── Commit / pull request malveillant
│ ├── Confusion de dépendances (interne vs public)
│ └── Typosquatting (noms de paquets similaires)
├── Système de Build
│ ├── Pipeline CI/CD compromis
│ ├── Cache de build empoisonné
│ ├── Plugin / action de build malveillant
│ └── Exfiltration de secrets depuis l'env de build
├── Dépendances
│ ├── Paquet upstream malveillant
│ ├── Dépendance non maintenue avec CVEs connues
│ ├── Risque de dépendances transitives
│ └── Compromission du registre de paquets
├── Artefacts
│ ├── Image conteneur altérée
│ ├── Binaire non signé
│ └── Man-in-the-middle au téléchargement
└── Déploiement
├── IaC / Helm chart compromis
├── Déploiement non autorisé
└── Configuration runtime non sécurisée
Niveaux du Framework SLSA
| Niveau | Exigences | Garantie d'Intégrité | Exemple |
|---|---|---|---|
| SLSA 0 | Aucune garantie | Aucune | Builds manuels sur le laptop du dev |
| SLSA 1 | Processus de build documenté | La provenance existe | CI/CD génère des métadonnées de provenance |
| SLSA 2 | Build hébergé, provenance signée | Falsification après build détectable | GitHub Actions avec attestations signées |
| SLSA 3 | Plateforme de build renforcée | Falsification pendant le build détectable | Environnements de build isolés, éphémères |
Comparaison des Formats SBOM
| Aspect | SPDX | CycloneDX | SWID |
|---|---|---|---|
| Maintenu par | Linux Foundation | OWASP | ISO/IEC |
| Focus | Licences + sécurité | Sécurité + risque opérationnel | Identification logicielle |
| Format | JSON, RDF, YAML | JSON, XML, Protobuf | XML |
| Support VEX | Oui (SPDX 2.3+) | Oui (natif) | Non |
| Adoption | Mandat gouvernemental US | Fort dans l'outillage AppSec | Legacy, en déclin |
Recommandations Stratégiques
Commencez par les SBOMs. Générer un SBOM pour chaque build est un effort faible à haute valeur. Utilisez syft ou Trivy dans votre pipeline CI.
Signez tout. Cosign avec signature keyless (via Sigstore Fulcio et Rekor) élimine la charge de gestion des clés. Combinez avec des politiques d'admission Kyverno pour imposer "aucune image non signée en production."
Épinglez les dépendances agressivement. Les lock files sont nécessaires mais pas suffisants. Épinglez les GitHub Actions sur des SHA de commit. Épinglez les images de base sur des digests.
Adoptez SLSA incrémentalement. La plupart des organisations peuvent atteindre SLSA 2 en quelques semaines avec GitHub Actions et les attestations d'artefacts.
Ressources
:::