Site icon ORNISEC

Supply Chain Attack

Quand une dépendance devient une attaque : les risques supply chain dans les registres open source (npm,…)

Les attaques de la chaîne d’approvisionnement (supply chain attacks) ciblent les dépendances logicielles qu’utilisent les développeurs. Plutôt que d’attaquer directement une application finale, les attaquants compromettent les bibliothèques tierces ou les registres de paquets (comme npm, utilisé dans l’écosystème Node.js).
Ce type d’attaque est en forte augmentation car il exploite la confiance implicite des développeurs dans l’écosystème open source.

Comment fonctionnent les attaques supply chain sur npm comme exemple ?

  1. Typosquatting
    • L’attaquant publie un paquet dont le nom ressemble à un paquet légitime.
    • Exemple : expresss (trois “s”) au lieu de express.
    • Un développeur qui fait une faute de frappe peut installer le paquet piégé.
  2. Dependency confusion
    • Technique où un attaquant publie une dépendance avec le même nom qu’un paquet interne utilisé par une entreprise.
    • En l’absence d’une configuration stricte des registres, npm peut résoudre une dépendance interne vers un paquet public du même nom.
    • Exploité par Alex Birsan en 2021 pour infiltrer des grandes entreprises (Apple, Microsoft, etc.).
  3. Compte compromis ou abandonné
    • Si un mainteneur npm utilise un mot de passe faible ou réutilisé, son compte peut être piraté.
    • L’attaquant pousse alors une version malveillante du paquet.
    • Exemple : en 2018, le paquet event-stream a été compromis via une prise de contrôle du projet.

Ce type d’attaque peut avoir comme impact :

2025 : attaque supply chain majeure sur le registre npm

En 2025, le registre npm a été victime d’une attaque supply chain de grande ampleur, marquante par l’impact potentiel sur l’écosystème JavaScript.

Les attaquants ont compromis le compte du mainteneur « qix » qui a confirmé avoir étévictime d’une campagne de phishing. En cliquant sur le lien, les victimes étaient redirigées vers une fausse page de connexion qui exfiltrait leurs identifiants vers une URL contrôlée par les attaquants.

Source : aikido.dev

Une fois les précieuses informations entre leurs mains, les cybercriminels ont pu accéder au compte du mainteneur et publier de nouvelles versions infectées de plusieurs packages NPM :

Au total, ces bibliothèques cumulent plusieurs milliards de téléchargements hebdomadaires, ce qui a rendu cette attaque particulièrement critique par son potentiel de propagation.

Le code malveillant injecté ciblait spécifiquement les portefeuilles de cryptomonnaies, en interceptant et redirigeant silencieusement les transactions initiées depuis des wallets tels que MetaMask ou Phantom vers des adresses contrôlées par les attaquants.

Cet incident illustre le risque systémique des attaques supply chain :
une compromission unique peut impacter des milliers de projets et des millions d’utilisateurs finaux, sans attaque directe des applications cibles.

Comment se protéger contre ce risque ?

La mise en place de mesures de protection doit s’envisager sous deux volets complémentaires :

Pour les développeurs :

Pour les organisations :

Les attaques supply chain, en particulier sur des registres comme npm, représentent aujourd’hui l’une des menaces majeures pour les développeurs et les entreprises.

La sécurité des applications ne se limite plus au code interne : elle dépend aussi de la vigilance sur les dépendances tierces.

Cela ne concerne pas uniquement npm, mais l’ensemble des registres de paquets open source comme PyPI (Python), RubyGems (Ruby), Packagist (PHP), Maven Central (Java), ou encore NuGet (.NET). Chaque écosystème est exposé aux mêmes risques : dépendances compromises, typosquatting, mainteneurs malveillants ou comptes compromis.

Face à ces menaces, une approche structurée et proactive de la sécurité des dépendances est devenue indispensable.

Chez ORNISEC, nous pouvons vous accompagner dans la sécurisation de votre chaîne d’approvisionnement logicielle, en vous accompagnant à mettre en place :

Quitter la version mobile