Retour au blog
supply chainnpmtechniqueDevOps

Supply chain : npm, composer, pip, quand vos dépendances sont l'attaque

Publié le 2026-04-138 min de lectureFlorian

Votre code n'est qu'une fraction de votre application

Une application moderne contient 80 à 95% de code tiers via ses dépendances. Un projet Node.js typique installe des centaines de paquets transitifs. Chacun est un vecteur d'attaque potentiel. Les attaques supply chain ciblent ce maillon faible : plutôt que d'attaquer votre code, l'attaquant compromet une dépendance que vous installez volontairement.

Typosquatting

L'attaquant publie un paquet dont le nom ressemble à un paquet populaire : lodassh au lieu de lodash, reqeusts au lieu de requests. Une faute de frappe dans package.json ou requirements.txt installe le paquet malveillant.

Cas réels : en 2022, des paquets npm comme ua-parser-jss et colors-2 ont piégé des milliers de développeurs. En Python, python3-dateutil (avec un tiret supplémentaire) contenait du code malveillant.

Protection : vérifiez toujours le nom exact du paquet. Utilisez npm audit, pip-audit ou composer audit pour détecter les paquets suspects.

Dependency confusion

Votre organisation utilise un registre privé pour des paquets internes. L'attaquant publie un paquet avec le même nom sur le registre public (npmjs.com, PyPI) avec une version supérieure. Le gestionnaire de paquets résout vers la version publique plus récente.

Cas réel : en 2021, le chercheur Alex Birsan a démontré cette attaque contre Apple, Microsoft et d'autres en publiant des paquets sur npm avec les noms de leurs paquets internes.

Protection : configurez le scoping des paquets (@company/package sur npm), utilisez des namespaces sur PyPI, et configurez votre gestionnaire pour interdire la résolution vers le registre public pour les paquets internes.

Compromission de mainteneur

Un mainteneur légitime d'un paquet populaire est compromis (phishing, credential stuffing) ou vend son accès. Le paquet est mis à jour avec du code malveillant qui s'exécute à l'installation (postinstall sur npm) ou à l'import.

Cas réels :

  • event-stream (2018) : un nouveau mainteneur a ajouté une dépendance malveillante qui ciblait les portefeuilles Bitcoin
  • xz-utils (2024) : un contributeur patient a gagné la confiance du mainteneur pendant deux ans avant d'introduire une backdoor dans la bibliothèque de compression utilisée par SSH
  • ua-parser-js (2021) : le compte npm du mainteneur a été compromis, le paquet (7M de téléchargements/semaine) a été mis à jour avec un cryptominer
  • Scripts d'installation

    Les scripts preinstall et postinstall de npm s'exécutent avec les mêmes droits que l'utilisateur qui fait npm install. Un paquet malveillant peut exfiltrer des variables d'environnement (tokens CI/CD, clés API), modifier d'autres fichiers du projet, ou installer des backdoors.

    Protection : utilisez --ignore-scripts pour les installations non fiables. Configurez .npmrc avec ignore-scripts=true et n'activez les scripts que pour les paquets qui en ont vraiment besoin.

    Lockfiles et intégrité

    Le package-lock.json, composer.lock ou poetry.lock garantit la reproductibilité des installations. Mais si le lockfile est modifié (par un PR malveillant ou par un compromis du registre), l'intégrité est perdue.

    Protection :

  • Committez toujours vos lockfiles
  • Utilisez npm ci (pas npm install) en CI/CD pour respecter strictement le lockfile
  • Vérifiez les hashes d'intégrité (integrity dans package-lock.json)
  • Reviewez les modifications de lockfiles dans les pull requests
  • Stratégie de défense en profondeur

  • Audit régulier : npm audit, pip-audit, composer audit dans votre CI/CD
  • Lockfiles stricts : committés et vérifiés
  • Mises à jour contrôlées : Dependabot ou Renovate avec review manuelle
  • Scoping des paquets privés : namespaces et registres configurés correctement
  • SCA (Software Composition Analysis) : outils comme Snyk, Socket ou Semgrep Supply Chain
  • SBOM : maintenez un inventaire de vos dépendances pour réagir rapidement quand une CVE est publiée
  • Chez CleanIssue, nous analysons l'arbre de dépendances de vos applications lors de nos audits. Parlez-nous de votre revue externe pour évaluer votre exposition aux attaques supply chain.

    Articles liés

    Trois analyses proches pour continuer la lecture sur la meme surface de risque.

    Sources

    Rédigé par Florian
    Revu le 2026-04-13

    Analyse éditoriale fondée sur la documentation officielle des éditeurs, projets et autorités concernées.

    Services associés

    Si ce sujet reflète un risque concret sur votre stack, voici les audits CleanIssue les plus pertinents.

    Besoin d'une revue externe de votre SaaS RH ?

    Expliquez votre produit, votre stack et votre contexte client. Nous revenons vers vous avec le bon niveau de revue.

    Parler de votre audit