Menaces liées à la chaîne d’approvisionnement
Comment les dépendances deviennent des vecteurs d’attaque.
Menaces liées à la chaîne d’approvisionnement est une leçon Cyber Security Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cyber Security Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cyber Security Academy comprend 4 leçons au total.
Qu'est-ce qu'une attaque de la chaîne logistique logicielle
Une attaque de la chaîne logistique logicielle compromet une organisation non pas en l'attaquant directement, mais en corrompant un élément auquel elle fait confiance et qu'elle utilise : une bibliothèque, un outil de compilation, une image de base de conteneur ou un serveur de mise à jour.
Comme les logiciels modernes sont assemblés à partir de centaines de composants tiers, un seul maillon empoisonné est transmis à chaque utilisateur en aval. L'attaquant investit une fois et atteint de nombreuses victimes.
- Inversion de la confiance — la frontière de sécurité se déplace à l'extérieur de votre propre code
- Rayon d'impact transitif — un seul paquet malveillant se propage dans des milliers de compilations
L'iceberg des dépendances
Lorsque vous ajoutez une dépendance directe, vous récupérez souvent des dizaines de dépendances transitives que vous n'avez jamais choisies. Une application Node ou Python typique déclare quelques paquets, mais en résout des centaines.
Répertoriez l'arborescence complète résolue, et pas seulement le manifeste, afin de voir ce que vous livrez réellement :
# npm: full resolved dependency tree
npm ls --all
# Python: pinned transitive closure
pip freeze
# count transitive nodes
npm ls --all --parseable | wc -lTyposquattage et confusion
Les attaquants publient des paquets malveillants dont les noms ressemblent à ceux de paquets populaires, en comptant sur une faute de frappe fatale.
- Typosquattage —
reqeustsau lieu derequests - Combosquattage —
python-requestsqui imite le véritable nom - Confusion de dépendances — publication d'un paquet public portant le même nom que votre paquet privé interne, afin qu'un résolveur mal configuré récupère la version de l'attaquant
Défendez-vous en imposant un registre interne de confiance et en utilisant des paquets privés avec une portée ou un espace de noms.
Prise de contrôle d'un compte ou d'un responsable de maintenance
Un paquet légitime et largement approuvé peut devenir malveillant si le compte de son responsable de maintenance est compromis ou si un contributeur malveillant obtient les droits de publication.
Des incidents récents montrent que des attaquants hameçonnent les identifiants des responsables de maintenance, puis publient une version corrective empoisonnée qui exfiltre des jetons pendant l'installation.
- Exigez l'authentification à deux facteurs sur tous les comptes de publication
- Privilégiez les paquets dotés de jetons de publication à portée limitée et de versions protégées
- Surveillez l'apparition inattendue de nouveaux responsables de maintenance sur les dépendances critiques
Scripts d'installation malveillants
De nombreux écosystèmes exécutent du code au moment de l'installation, avant même que votre application ne s'exécute. Un npm install peut exécuter un mécanisme postinstall qui dérobe des variables d'environnement ou des clés SSH.
Désactivez les scripts d'installation arbitraires dans l'intégration continue et contrôlez chaque paquet qui en a besoin :
# npm: block lifecycle scripts during install
npm ci --ignore-scripts
# inspect what a package would run
npm view <package> scripts
# pnpm equivalent
pnpm install --ignore-scriptsOutils de compilation compromis
L'environnement de compilation lui-même est une cible de grande valeur. Si un attaquant empoisonne un compilateur, une image d'agent d'intégration continue ou un module d'extension de compilation, chaque artefact qu'il produit comporte une porte dérobée, même lorsque votre code source est sain.
L'exemple classique est un mécanisme de mise à jour transformé en cheval de Troie qui signe un logiciel malveillant avec une clé légitime de signature de code, de sorte que les victimes l'acceptent comme authentique.
- Traitez l'infrastructure de compilation comme une infrastructure de production et appliquez-y un renforcement complet
- Utilisez des agents de compilation éphémères et reproductibles
- Séparez les clés de signature de l'hôte de compilation
Fichiers de verrouillage et hachages d'intégrité
Un fichier de verrouillage fixe les versions exactes et les hachages du contenu, de sorte qu'une nouvelle résolution ne puisse pas remplacer discrètement un artefact par un autre. Validez-le toujours dans le dépôt et laissez l'intégration continue le vérifier plutôt que de relancer librement la résolution.
Le champ d'intégrité stocke un hachage ; si l'archive tar téléchargée ne correspond pas, l'installation échoue.
# package-lock.json integrity entry
# "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
# "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA=="
# CI must install from lock, never re-resolve
npm ci
yarn install --frozen-lockfileAnalyse des vulnérabilités des dépendances
Les versions connues comme vulnérables (suivies sous forme de CVE) constituent la faiblesse la plus courante de la chaîne logistique. Les outils d'analyse de la composition logicielle (SCA) comparent vos dépendances résolues aux bases de données de vulnérabilités.
Exécutez des analyses dans l'intégration continue et faites échouer les compilations en cas de découvertes critiques :
# npm built-in audit
npm audit --audit-level=high
# OSV scanner across ecosystems
osv-scanner --lockfile=package-lock.json
# Trivy for filesystem and images
trivy fs --severity HIGH,CRITICAL .Figer les versions et intégrer les dépendances
Les plages de versions flottantes (^1.2.0) laissent automatiquement entrer les nouvelles versions, ce qui est pratique mais vous expose à une mise à jour corrective malveillante.
- Figez les versions exactes et examinez délibérément les mises à niveau
- Figez par hachage les images de conteneur, et non par des étiquettes modifiables comme
latest - Intégrez localement les dépendances critiques dans votre propre dépôt ou miroir afin qu'une suppression en amont ne puisse ni vous bloquer ni vous contaminer
# pin a container image by immutable digest
FROM python:3.12-slim@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613fSurveillance continue et provenance
Sécuriser la chaîne logistique est une activité continue, et non une analyse ponctuelle. Vous devez savoir ce que vous livrez, d'où cela provient et quand cela devient vulnérable.
- Générez une SBOM pour chaque version (dans la prochaine leçon)
- Consignez la provenance de la compilation afin de pouvoir prouver comment un artefact a été produit
- Abonnez-vous aux avis de sécurité afin qu'une nouvelle CVE déclenche une réévaluation des compilations déjà livrées
Modéliser les menaces de la chaîne de traitement
Cartographiez chaque étape où une entrée non fiable est introduite : les postes des développeurs, la gestion du code source, les registres de dépendances, le système de compilation, le stockage des artefacts et le canal de mise à jour. Chacune constitue un point d'injection potentiel.
Pour chaque étape, demandez-vous : qui peut écrire ici, que pourrait lui permettre une compromission et comment la détecterais-je ? Vous obtiendrez ainsi une liste priorisée de mesures de contrôle plutôt qu'une liste de vérification générique.
Vérification rapide : confusion de dépendances
Vérifiez votre compréhension d'une catégorie courante d'attaque de la chaîne logistique.
Récapitulatif : menaces de la chaîne logistique
Vous avez appris pourquoi les dépendances constituent des vecteurs d'attaque et comment réduire cette exposition.
- L'inversion de la confiance signifie que votre sécurité dépend de tiers que vous ne contrôlez pas
- Menaces principales : typosquattage, confusion de dépendances, prise de contrôle d'un responsable de maintenance, scripts d'installation malveillants et outils de compilation compromis
- Défenses essentielles : fichiers de verrouillage avec hachages d'intégrité, analyse SCA, figement exact par hachage, authentification à deux facteurs pour les éditeurs et surveillance continue
Ensuite, vous dresserez l'inventaire exact du contenu de votre logiciel à l'aide d'une SBOM.
Apprends Cyber Security Academy avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 76
- Leçons
- 303
Questions Fréquemment Posées
La leçon « Menaces liées à la chaîne d’approvisionnement » est-elle gratuite ?
Oui — le texte complet de « Menaces liées à la chaîne d’approvisionnement » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cyber Security Academy, passe à CoddyKit PRO. Le cours Cyber Security Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Menaces liées à la chaîne d’approvisionnement » ?
Comment les dépendances deviennent des vecteurs d’attaque. Tu pratiques Cyber Security Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cyber Security Academy ?
Aucune expérience préalable n'est requise. Cyber Security Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Menaces liées à la chaîne d’approvisionnement » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cyber Security Academy ?
Oui. Chaque leçon Cyber Security Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Menaces liées à la chaîne d’approvisionnement
- Nomenclature logicielle (SBOM)
- Signature des dépendances et des artefacts
- Sécuriser les pipelines CI/CD