tadata
← Retour à l'accueil

Sécurité de la Chaîne d'Approvisionnement Logicielle : Ne Faire Confiance à Rien que Vous n'Avez Pas Construit

#security#devops#ci-cd#supply-chain#compliance

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

tadata
Compte développeurcompromis Commit / pull requestmalveillant Confusion de dépendances(noms de paquetsinternes vs publics) Typosquatting (noms depaquets similaires) Code source Pipeline CI/CD compromis Cache de buildempoisonné Plugin / action de buildmalveillant Exfiltration de secretsdepuis l'environnementde build Système de build Paquet upstreammalveillant(event-stream,ua-parser-js) Dépendance non maintenueavec des CVE connues Risque des dépendancestransitives Compromission duregistre de paquets Dépendances Image de conteneuraltérée Binaire non signé Compromission duregistre Man-in-the-middle autéléchargement Artefacts IaC / chart Helmcompromis Déploiement non autorisé(gate d'approbationmanquante) Dérive par rapport àl'état déclaré Configurationd'exécution nonsécurisée Déploiement Vecteurs d'attaque de lachaîned'approvisionnement Vecteurs d'attaque de la chaîne d'approvisionnement
Compte développeurcompromis Commit / pull requestmalveillant Confusion de dépendances(noms de paquetsinternes vs publics) Typosquatting (noms depaquets similaires) Code source Pipeline CI/CD compromis Cache de buildempoisonné Plugin / action de buildmalveillant Exfiltration de secretsdepuis l'environnementde build Système de build Paquet upstreammalveillant(event-stream,ua-parser-js) Dépendance non maintenueavec des CVE connues Risque des dépendancestransitives Compromission duregistre de paquets Dépendances Image de conteneuraltérée Binaire non signé Compromission duregistre Man-in-the-middle autéléchargement Artefacts IaC / chart Helmcompromis Déploiement non autorisé(gate d'approbationmanquante) Dérive par rapport àl'état déclaré Configurationd'exécution nonsécurisée Déploiement Vecteurs d'attaque de lachaîned'approvisionnement Vecteurs d'attaque de la chaîne d'approvisionnement
tadata
Compromised CI action or plugin T1195.001 DETECT Unexpected network calls or secrets printed in joblogs PREVENT • Pin actions to a commit SHA• Least-privilege job tokens RESPOND Rotate every secret the job could read Malicious package release T1195.002 DETECT SCA alert, new install scripts, sudden maintainerchange PREVENT • Lockfiles and pinned versions• Delay new releases (cool-down) RESPOND Remove the version, rebuild, rotate tokens Stolen publish token DETECT Release not matching a tagged CI run PREVENT • Trusted publishing (OIDC)• MFA for maintainers RESPOND Revoke tokens, deprecate releases Build system tampering DETECT Reproducible build mismatch PREVENT • SLSA L3 isolated builds• Signed provenance RESPOND Rebuild from verified source, notify users Les classes d'attaques sur la chaîne d'approvisionnement vues par le défenseur
Compromised CI action or plugin T1195.001 DETECT Unexpected network calls or secrets printed in joblogs PREVENT • Pin actions to a commit SHA• Least-privilege job tokens RESPOND Rotate every secret the job could read Malicious package release T1195.002 DETECT SCA alert, new install scripts, sudden maintainerchange PREVENT • Lockfiles and pinned versions• Delay new releases (cool-down) RESPOND Remove the version, rebuild, rotate tokens Stolen publish token DETECT Release not matching a tagged CI run PREVENT • Trusted publishing (OIDC)• MFA for maintainers RESPOND Revoke tokens, deprecate releases Build system tampering DETECT Reproducible build mismatch PREVENT • SLSA L3 isolated builds• Signed provenance RESPOND Rebuild from verified source, notify users Les classes d'attaques sur la chaîne d'approvisionnement vues par le défenseur

Extrait de la fiche « DevSecOps part 2: supply chain and CI/CD hardening » · Demander la fiche complète

Niveaux du Framework SLSA

NiveauExigencesGarantie d'IntégritéExemple
SLSA 0Aucune garantieAucuneBuilds manuels sur le laptop du dev
SLSA 1Processus de build documentéLa provenance existeCI/CD génère des métadonnées de provenance
SLSA 2Build hébergé, provenance signéeFalsification après build détectableGitHub Actions avec attestations signées
SLSA 3Plateforme de build renforcéeFalsification pendant le build détectableEnvironnements de build isolés, éphémères
tadata
  • L1 Build L0 — no guarantees; starting point
  • L2 Build L1 — provenance exists: build platform documents how the artifact was built
  • L3 Build L2 — hosted build platform generates and signs provenance
  • L4 Build L3 — hardened build: isolated runs, provenance unforgeable by users of the platform
SLSA v1.0 (Supply-chain Levels for Software Artifacts, OpenSSF), volet Build : plus le niveau est haut, plus il est difficile d'altérer le build

Extrait de la fiche « DevSecOps part 2: supply chain and CI/CD hardening » · Demander la fiche complète

Comparaison des Formats SBOM

AspectSPDXCycloneDXSWID
Maintenu parLinux FoundationOWASPISO/IEC
FocusLicences + sécuritéSécurité + risque opérationnelIdentification logicielle
FormatJSON, RDF, YAMLJSON, XML, ProtobufXML
Support VEXOui (SPDX 2.3+)Oui (natif)Non
AdoptionMandat gouvernemental USFort dans l'outillage AppSecLegacy, 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.

tadata

Actors: CI job, OIDC issuer, Fulcio CA, Rekor log, Cluster admission

  1. CI job → OIDC issuer request workload identity token
  2. OIDC issuer ⇠ CI job signed token: repo, workflow, ref
  3. CI job ↺ ephemeral key pair in memory
  4. CI job → Fulcio CA public key + token + proof of possession
  5. Fulcio CA ⇠ CI job certificate valid ~10 min, identity in SAN
  6. CI job → Rekor log signature of the image digest + certificate
  7. Rekor log ⇠ CI job inclusion proof, signed timestamp
  8. CI job,Rekor log: Private key discarded; signature stored next to the image in the registry
  9. Cluster admission → Rekor log verify chain to Fulcio root, expected issuer + workflow identity, signing time inside the certificate window
Signature keyless Sigstore en CI (cosign) : aucune clé de signature longue durée à voler ; la confiance repose sur l'identité de la CI et sur le journal de transparence public

Extrait de la fiche « DevSecOps part 2: supply chain and CI/CD hardening » · Demander la fiche complète

Ressources

Nous utilisons des cookies analytiques pour améliorer votre expérience. Aucune donnée personnelle n'est collectée.