Retour aux bulletins
Critique2026-03-31CVSS N/Asupply-chainnpmaxiosjavascriptc2

Compromission du package npm Axios — Des versions malveillantes contactent un serveur C2

Des versions malveillantes du client HTTP axios (1.14.1 et 0.30.4) ont été publiées sur npm, injectant du code qui contacte un serveur Command & Control et exfiltre des données sensibles depuis les environnements de build.

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.0
  • axios@0.30.4 — version malveillante, version sûre : dernière version 0.x propre
  • plain-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 :

  1. Contacte un serveur C2 au domaine sfrclak.com depuis les environnements de build
  2. Exfiltre les variables d'environnement, qui contiennent couramment des clés API, des credentials de bases de données et des tokens cloud
  3. 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

  1. Fixez axios sur une version sûre — passez immédiatement à axios@1.14.0
  2. Supprimez node_modules et le lockfile, puis réinstallez :
    rm -rf node_modules package-lock.json
    npm install axios@1.14.0
    
  3. 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
  4. Auditez les logs CI/CD — recherchez les connexions sortantes vers sfrclak.com
  5. 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.1 et 0.30.4 sur 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 audit et des outils comme Socket.dev pour détecter les anomalies supply chain
  • Surveillez les nouvelles dépendances inattendues — l'apparition de plain-crypto-js dans 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