La supply chain npm vient d’être frappée de plein fouet : des versions piégées d’Axios, l’une des bibliothèques les plus populaires du web avec plus de 83 millions de téléchargements hebdomadaires, ont été publiées avec un RAT (Remote Access Trojan) embarqué. Voici comment détecter cette menace et protéger vos projets.
Ce qui s’est passé avec Axios
Les versions 1.14.1 et 0.30.4 d’Axios ont été compromises via le détournement d’un compte mainteneur. Ces versions injectent un cheval de Troie qui ouvre une porte dérobée sur la machine de la victime, permettant l’exécution de commandes à distance, le vol de données et la persistance.
L’attaque est particulièrement sournoise car Axios est une dépendance transitive de milliers de projets — votre application peut être vulnérable même si vous n’utilisez pas Axios directement.
Vérifier si votre projet est affecté
La première étape est de contrôler vos dépendances avec les commandes suivantes :
Avec npm
npm ls axios
npm audit
Avec yarn
yarn why axios
yarn audit
Avec pnpm
pnpm why axios
pnpm audit
Si la version affichée est 1.14.1 ou 0.30.4, vous êtes compromis. Revenez immédiatement à la version 1.14.0 ou 0.30.3.
Corriger le problème immédiatement
Voici les étapes de remédiation :
- Épinglez la version saine dans votre
package.json:"axios": "1.14.0"(sans le^) - Supprimez node_modules et le lock file, puis réinstallez :
rm -rf node_modules package-lock.json && npm install - Vérifiez l’intégrité : comparez le hash SHA-512 du package installé avec celui publié sur npmjs.com
- Analysez vos logs réseau : le RAT communique avec des serveurs C2 — cherchez des connexions sortantes inhabituelles
- Scannez les machines de développement : si le package compromis a été installé, considérez la machine comme potentiellement infectée
Prévenir les attaques supply chain npm
Cette attaque n’est pas un cas isolé. Voici les bonnes pratiques pour sécuriser votre chaîne d’approvisionnement :
Verrouiller les versions
- Utilisez des versions exactes (
"1.14.0") plutôt que des plages ("^1.14.0") - Committez votre lock file (
package-lock.json,yarn.lock) dans le dépôt - Activez
npm config set save-exact truepar défaut
Surveiller automatiquement
- Intégrez npm audit dans votre pipeline CI/CD
- Utilisez des outils comme Snyk, Socket ou Dependabot pour la détection en continu
- Configurez des alertes sur les changements de mainteneurs de vos dépendances critiques
Utiliser un registre privé
- Déployez un proxy npm (Verdaccio, Artifactory, Nexus) pour contrôler les packages autorisés
- Mettez en place une liste blanche de versions approuvées pour les dépendances critiques
- Activez la vérification de signature npm (
npm audit signatures)
Renforcer la sécurité des comptes npm
- Activez le 2FA obligatoire pour tous les mainteneurs
- Utilisez des tokens d’accès à durée limitée pour la publication
- Auditez régulièrement les permissions d’accès de vos packages
Aller plus loin : outils de détection avancés
Pour une protection renforcée, voici des outils spécialisés dans la sécurité supply chain :
- Socket — analyse comportementale des packages (détecte les accès réseau, fichiers, variables d’environnement suspects)
- Snyk — scan de vulnérabilités + monitoring continu des dépendances
- npm audit signatures — vérifie que les packages sont signés par le registre
- Lockfile-lint — valide l’intégrité et la source des packages dans votre lock file
N’oubliez pas : chaque package que vous installez est une décision de confiance. Comme le dit Feross Aboukhadijeh, « Every package you install is a trust decision. Make it deliberately. »