Attaque supply chain sur Axios npm : la Corée du Nord et 83 millions de projets JavaScript

Le 31 mars 2026, Axios — bibliothèque HTTP la plus utilisée du monde JavaScript avec 83 millions de téléchargements hebdomadaires — a été compromise via une attaque sur la chaîne d'approvisionnement. Objectif : distribuer un Remote Access Trojan (RAT) multiplateforme. Attribution : Sapphire Sleet / UNC1069, groupe nord-coréen à motivation financière.

Comment l'attaque s'est déroulée

18h avant l'attaque. Les attaquants ont déposé sur npm une dépendance piégée (plain-crypto-js@4.2.1) avec trois payloads pré-compilés pour Windows, macOS et Linux.

Compromission du compte. Le compte npm de jasonsaayman (mainteneur principal d'Axios) a été compromis. L'email de récupération a été changé pour une adresse ProtonMail contrôlée par les attaquants.

Publication en 39 minutes. Deux versions malveillantes publiées simultanément :

  • Axios 1.14.1 (branche stable)
  • Axios 0.30.4 (branche legacy)

Chaque installation de ces versions téléchargeait et exécutait le RAT adapté à l'OS détecté.

Capacités du RAT installé

  • Exfiltration de fichiers et capture de frappes clavier (keylogging)
  • Exécution de commandes arbitraires depuis un serveur de contrôle distant (C2)
  • Persistance au démarrage (launchd macOS / services Windows / crontab Linux)
  • Vol de credentials : tokens AWS/GitHub/SSH, wallets crypto — raison principale de l'attribution nord-coréenne

Qui était exposé ?

Tout projet ayant exécuté entre le 31 mars 00h21 UTC et 03h29 UTC :

npm install axios@^1.14.0
npm install axios@^0.30.0
npm update axios

Les pipelines CI/CD (GitHub Actions, GitLab CI) qui installent automatiquement les dernières versions étaient particulièrement exposés.

Remédiation

Versions sûres : Axios 1.14.0 ou antérieur / 0.30.3 ou antérieur

  1. Revenir aux versions sûres dans package-lock.json
  2. Scanner les systèmes exposés avec un EDR (CrowdStrike, SentinelOne, Defender)
  3. Révoquer et régénérer tous les tokens et secrets d'environnement sur les machines touchées
  4. Auditer les logs réseau de la période 00h21-03h29 UTC pour détecter des connexions vers les C2 connus

La leçon structurelle

Un seul compte compromis peut infecter des millions de projets downstream. La sécurité d'un projet dépend de tous ses contributeurs mainteneurs. Les bonnes pratiques : MFA obligatoire sur les comptes npm critiques, signature cryptographique des packages (npm provenance), épinglage des versions en CI/CD.


FAQ

Comment savoir si mon projet a été affecté ?

Vérifiez vos logs de build pour la fenêtre 31 mars 00h21-03h29 UTC. Cherchez plain-crypto-js@4.2.1 dans votre arbre de dépendances. Snyk, Dependabot ou Socket.dev peuvent automatiser la vérification.

npm impose-t-il le MFA pour les gros packages ?

Depuis 2023, oui. L'attaque Axios a néanmoins réussi — npm a annoncé une révision de sa politique de sécurité post-incident.