123% de CVE signalées en plus par jour en 2026 par rapport à l'an dernier.

Chaîne d'approvisionnement

Qu'est-ce que la sécurité de la chaîne d'approvisionnement logicielle ?

La sécurité de la chaîne d'approvisionnement logicielle consiste à protéger tout ce qui entre dans votre logiciel avant qu'il n'atteigne les utilisateurs : les paquets open source, le système de build, les outils du pipeline et la release elle-même. Les attaquants s'en prennent de plus en plus à ces éléments plutôt qu'à votre application, car un seul paquet ou une seule étape de build compromis atteint tous les produits qui les utilisent.

Mis à jour le

Qu'est-ce que la chaîne d'approvisionnement logicielle ?

La chaîne d'approvisionnement logicielle regroupe toutes les personnes et tous les éléments qui amènent un logiciel de l'éditeur de code d'un développeur jusqu'à la production. Elle se décompose en quatre étapes, chacune avec ses propres risques.

Étape Ce qu'elle contient Ce qui peut mal tourner
Source Votre code, vos dépôts et les comptes de vos développeurs Identifiants volés, commits malveillants, secrets divulgués
Dépendances Paquets open source, images de base, code tiers Versions vulnérables, releases malveillantes, typosquatting
Build Runners CI, GitHub Actions, outils de build, caches Actions compromises, caches empoisonnés, secrets de pipeline volés
Release Artefacts, registres, déploiements, mises à jour Artefacts substitués, mises à jour altérées, aucune trace de ce qui a été livré

Pourquoi c'est important aujourd'hui

L'essentiel de ce que vous livrez, vous ne l'avez pas écrit. Une application moderne est principalement open source, et chaque dépendance directe en apporte d'autres que personne dans votre équipe n'a choisies. Ces paquets s'exécutent avec les mêmes accès que votre propre code, et leurs scripts d'installation peuvent s'exécuter dans votre pipeline CI, à côté de vos secrets.

Les dernières années montrent comment cela est exploité :

  • SolarWinds : le build a été compromis, si bien qu'un code source sain a produit une release empoisonnée.
  • Log4Shell : une faille dans une seule bibliothèque de journalisation a atteint des produits qui ignoraient l'utiliser.
  • xz utils : un contributeur de confiance a glissé une porte dérobée dans un projet présent dans les distributions Linux.
  • tj-actions : une GitHub Action détournée a exécuté le code des attaquants dans les pipelines qui l'utilisaient, avec des secrets à portée de main.
  • Shai-Hulud : un ver s'est propagé dans les paquets npm, volant des tokens sur les machines et dans les jobs CI qui les installaient.

Pour comprendre ces attaques étape par étape, voir qu'est-ce qu'une attaque de la chaîne d'approvisionnement.

Comment fonctionne la sécurité de la chaîne d'approvisionnement logicielle

Un programme a besoin de quatre choses. Tout le reste n'est que détail.

  1. Savoir ce que vous livrez. Conservez une SBOM exacte pour chaque release, issue du build qui l'a produite, y compris les dépendances transitives.
  2. Contrôler ce qui entre. Épinglez les versions, utilisez un lockfile, limitez les sources depuis lesquelles les builds peuvent récupérer des paquets et vérifiez les nouveaux paquets.
  3. Protéger le build. Isolez les jobs, limitez les secrets, épinglez les actions par commit et restreignez le trafic sortant, pour qu'un paquet compromis ne puisse envoyer vos tokens nulle part. Consultez la sécurité des runners et pourquoi la sécurité de la chaîne d'approvisionnement a sa place dans la CI.
  4. Continuer à surveiller ce qui a été livré. De nouvelles vulnérabilités touchent des logiciels déjà en production. Surveillez ces logiciels, identifiez les releases concernées et suivez chaque correction jusqu'à une nouvelle release.

Pour la checklist détaillée, consultez les bonnes pratiques de sécurité de la chaîne d'approvisionnement logicielle.

Cadres et réglementations

Nom Ce que c'est Idéal pour
SLSA Des niveaux pour l'intégrité du build et la provenance Renforcer la façon dont le logiciel est construit
NIST SSDF Pratiques de développement sécurisé, SP 800-218 Un programme complet de développement sécurisé
NIST SP 800-161 Gestion des risques cyber de la chaîne d'approvisionnement La gestion des risques à l'échelle de l'organisation
OpenSSF Scorecard Contrôles automatisés de la santé des projets open source Vérifier les dépendances
Cyber Resilience Act Loi de l'UE sur les produits comportant des éléments numériques Vendre dans l'UE. Voir qu'est-ce que le CRA

Quels outils sont concernés ?

Aucun produit ne couvre à lui seul tout cela. La catégorie se divise en outils SCA, outils SBOM, sécurité CI/CD et des runners, pare-feu de paquets, gestion de la posture de sécurité des applications et analyse de binaires. Pour savoir ce que fait chacun et qui le vend, consultez le comparatif des outils de sécurité de la chaîne d'approvisionnement logicielle et leur coût.

Par où commencer

  1. Générez une SBOM de votre produit le plus important à partir de son build CI, et lisez-la.
  2. Activez les alertes de vulnérabilité sur les dépendances, et décidez qui en est responsable.
  3. Épinglez vos GitHub Actions par commit et passez en revue les secrets auxquels vos workflows ont accès.
  4. Limitez le trafic sortant de vos builds aux hôtes dont ils ont réellement besoin.
  5. Mettez en place la surveillance de ce que vous avez livré, pas seulement de ce que vous construisez.

L'approche de CRACI

CRACI commence par le build, car c'est le seul endroit qui voit tout. Il remplace vos runners hébergés par GitHub par des runners plus rapides et moins coûteux qui enregistrent chaque paquet récupéré par chaque job, à tous les niveaux de l'arbre, y compris les paquets restaurés depuis les caches CI. La politique de trafic sortant bloque les connexions dont votre build n'a pas besoin : elle vous protège donc même contre une attaque que personne n'a encore vue. CRACI continue ensuite de vérifier ce qui a été livré par rapport aux nouvelles vulnérabilités et suit chacune, du tri jusqu'à une release corrigée. Consultez la sécurité de la chaîne d'approvisionnement logicielle avec CRACI.

Sécurité de la chaîne d'approvisionnement logicielle : questions fréquentes

Qu'est-ce que la sécurité de la chaîne d'approvisionnement logicielle ?

C'est la pratique qui consiste à protéger tout ce qui entre dans votre logiciel avant qu'il n'atteigne les utilisateurs : dépendances open source, systèmes de build, outils du pipeline et releases.

Quel exemple d'attaque de la chaîne d'approvisionnement logicielle peut-on citer ?

Lors de l'attaque SolarWinds, le build a été compromis, si bien que les clients ont reçu une mise à jour empoisonnée d'un éditeur de confiance. Lors des attaques Shai-Hulud, un ver s'est propagé dans les paquets npm et a volé des tokens sur les machines qui les installaient.

Quelle est la différence entre la sécurité de la chaîne d'approvisionnement et la sécurité applicative ?

La sécurité applicative examine les failles du code que vous écrivez. La sécurité de la chaîne d'approvisionnement examine ce que vous n'avez pas écrit et la façon dont votre logiciel est construit et publié. Un programme a besoin des deux.

Une SBOM suffit-elle à sécuriser la chaîne d'approvisionnement ?

Non. Une SBOM vous dit ce que vous livrez, ce qui en est le fondement. Vous devez aussi contrôler ce qui entre, protéger le build et continuer à surveiller ce que vous avez publié.

Quels sont les principaux cadres ?

SLSA pour l'intégrité du build, le NIST SSDF pour les pratiques de développement sécurisé et NIST SP 800-161 pour la gestion des risques de la chaîne d'approvisionnement. Dans l'UE, le Cyber Resilience Act fixe des exigences légales pour les produits comportant des éléments numériques.

Qui est responsable de la sécurité de la chaîne d'approvisionnement logicielle ?

Elle relève généralement de la sécurité applicative ou produit, en lien avec les équipes plateforme et DevOps qui gèrent les pipelines. Les corrections vont ensuite aux équipes d'ingénierie responsables de chaque service.

Découvrez ce que vos builds récupèrent vraiment

Exécutez un workflow GitHub Actions sur CRACI et obtenez une SBOM enregistrée du build, ainsi que sa trace réseau.

Réserver une démo