Contexte
Le 31 mars 2026, une attaque supply chain a été identifiée ciblant axios, l'un des packages npm les plus téléchargés (plus de 60 millions de téléchargements hebdomadaires). L'attaquant a publié des versions compromises qui injectent du code malveillant établissant des connexions vers un serveur Command & Control.
Versions affectées
axios@1.14.1— version malveillante, version sûre : 1.14.0axios@0.30.4— version malveillante, version sûre : dernière version 0.x propreplain-crypto-js@4.2.1— dépendance frauduleuse introduite par l'attaque (ne devrait pas exister)
Les versions malveillantes introduisent plain-crypto-js@4.2.1 comme dépendance, un package illégitime servant de vecteur principal pour le payload.
Vecteur d'attaque
Le package compromis contient du code qui :
- Contacte un serveur C2 au domaine
sfrclak.comdepuis les environnements de build - Exfiltre les variables d'environnement, qui contiennent couramment des clés API, des credentials de bases de données et des tokens cloud
- S'exécute à l'installation/build, ce qui fait des pipelines CI/CD les cibles principales
Ce schéma reprend le même playbook que les attaques supply chain récentes sur ua-parser-js (2021) et la campagne TeamPCP (2026) : compromettre un package largement utilisé, injecter un stealer qui récolte les secrets des environnements CI/CD.
Impact
Tout projet ayant installé axios@1.14.1 ou axios@0.30.4 a potentiellement eu ses secrets d'environnement de build exfiltrés. Cela inclut :
- Clés API et tokens (AWS, GCP, Stripe, etc.)
- Credentials de bases de données stockés en variables d'environnement
- Secrets CI/CD (tokens GitHub, clés de déploiement)
- Clés privées accessibles dans le contexte de build
Détection
Vérifiez si votre projet est affecté :
# Rechercher la dépendance malveillante dans les lockfiles
grep -r "plain-crypto-js" package-lock.json yarn.lock pnpm-lock.yaml
# Vérifier la version installée
npm ls axios
# Rechercher directement dans node_modules
find node_modules -name "plain-crypto-js" -type d
Si plain-crypto-js apparaît n'importe où dans votre arbre de dépendances, vous êtes affecté.
Remédiation
- Fixez axios sur une version sûre — passez immédiatement à
axios@1.14.0 - Supprimez node_modules et le lockfile, puis réinstallez :
rm -rf node_modules package-lock.json npm install axios@1.14.0 - Effectuez une rotation de tous les secrets — considérez chaque credential accessible pendant le build comme compromis :
- Clés API (fournisseurs cloud, services SaaS)
- Mots de passe de bases de données
- Clés de déploiement et tokens
- Secrets de signature de sessions
- Auditez les logs CI/CD — recherchez les connexions sortantes vers
sfrclak.com - Redéployez des builds propres — assurez-vous qu'aucun artefact mis en cache des versions compromises ne subsiste
Timeline
- 31 mars 2026 — Publication des versions malveillantes
1.14.1et0.30.4sur npm - 31 mars 2026 — L'équipe sécurité de Vercel identifie la compromission, bloque le domaine C2
- 31 mars 2026 — Versions malveillantes signalées à npm pour suppression
Recommandations
- Fixez les versions exactes dans les lockfiles de production — évitez les ranges
^ou~pour les dépendances critiques - Utilisez
npm auditet des outils comme Socket.dev pour détecter les anomalies supply chain - Surveillez les nouvelles dépendances inattendues — l'apparition de
plain-crypto-jsdans un lockfile est un indicateur clair de compromission - Limitez l'exposition des secrets CI/CD — n'injectez les secrets que dans les étapes qui en ont réellement besoin
- Activez npm provenance lorsque disponible pour vérifier l'origine des builds de packages