L'attaque visant la chaîne d'approvisionnement d'Axios ébranle la confiance envers npm

| 31, 2026 mars
Le logo du client HTTP Axios, qui se compose simplement du mot « AXIOS » écrit en violet

Des chercheurs ont découvert que des versions compromises d'Axios installaient un cheval de Troie d'accès à distance.

Axios est un client HTTP basé sur les promesses pour Node.js, c'est-à-dire un outil d'aide que les développeurs utilisent en arrière-plan pour permettre aux applications de communiquer avec Internet. Par exemple, Axios rend les requêtes telles que « récupérer mes messages sur le serveur » ou « envoyer ce formulaire au site web » plus simples et plus fiables pour les programmeurs, et leur évite d'avoir à écrire eux-mêmes de grandes quantités de code réseau de bas niveau.

Comme il fonctionne aussi bien dans le navigateur que sur les serveurs (Node.js), de nombreux projets modernes basés sur JavaScript l'intègrent comme composant de base. Même si vous n'installez jamais Axios vous-même, vous pourriez y être confronté indirectement lorsque vous :

  • Utilisez des applications web développées à l'aide de frameworks tels que React, Vue ou Angular.
  • Utilisez des applications mobiles ou de bureau développées à l'aide de technologies web telles qu'Electron, React Native et autres.
  • Découvrez des outils SaaS (Software-as-a-Service) plus modestes, des panneaux d'administration ou des services auto-hébergés développés par des développeurs qui ont choisi Axios.

On pourrait comparer cela à la plomberie de votre maison. En général, on ne remarque pas les tuyaux, mais ce sont eux qui acheminent l'eau jusqu'au robinet que vous ouvrez. Et vous n'avez pas besoin de savoir où ils se trouvent tant qu'il n'y a pas de fuite.

Que s'est-il passé ?

En utilisant les identifiants piratés d'un responsable principal d'Axios, un pirate a publié des paquets malveillants sur npm : axios@1.14.1 et axios@0.30.4. Les versions malveillantes injectent une nouvelle dépendance, plain-crypto-js@4.2.1, qui n'est jamais importé nulle part dans le code source d'Axios. 

À eux deux, ces paquets concernés totalisent jusqu'à 100 millions de téléchargements hebdomadaires sur npm, ce qui signifie que leur impact s'étend à un très large éventail d'applications web, de services et de pipelines.

Il est important de noter que la version d'Axios concernée n'apparaît pas dans les balises GitHub officielles du projet. Cela signifie que les personnes et les projets concernés sont les développeurs et les environnements qui ont exécuté la commande « npm install » et qui ont obtenu le résultat suivant :

  • axios@1.14.1 ou axios@0.30.4ou
  • la dépendance plain-crypto-js@4.2.1.

Tout workflow ayant installé l'une de ces versions avec les scripts activés a pu exposer tous les secrets injectés (clés cloud, clés de déploiement de dépôt, jetons npm, etc.) à un attaquant interactif, car le script post-installation (node setup.js) qui s'exécute automatiquement lors de l'installation via npm a téléchargé un dropper obfusqué qui récupère une charge utile RAT spécifique à la plateforme pour macOS, Windows ou Linux.

Si vous êtes un développeur utilisant Axios, considérez toute machine sur laquelle les versions compromises ont été installées comme potentiellement entièrement compromise et procédez à une rotation des secrets. L'attaquant pourrait avoir obtenu l'accès au dépôt, aux clés de signature, aux clés API ou à d'autres secrets pouvant servir à introduire une porte dérobée dans les prochaines versions ou à attaquer votre backend et vos utilisateurs.

Les utilisateurs d'applications développées avec Axios n'ont aucune raison de s'inquiéter. Si vous vous contentez de charger votre application dans un navigateur, vous n'exécutez pas directement ce RAT via Axios. La contamination se produit lors de l'installation ou de la compilation, et non lors de l'exécution de l'application.

Indicateurs de compromis (IOC)

Comme l'ont souligné les chercheurs, ce dropper de logiciel malveillant efface ses traces après son intervention :

« Toute vérification effectuée après l'infection du fichier node_modules/plain-crypto-js/package.json révélera un manifeste parfaitement vierge. Il n'y a ni script post-installation, ni fichier setup.js, ni aucun signe indiquant qu'un élément malveillant ait jamais été installé. L'exécution de la commande npm audit ou l'examen manuel du répertoire du paquet installé ne permettra pas de détecter la compromission. »

Vous pouvez donc rechercher les indicateurs de performance clés suivants :

Domaine : sfrclak[.]com

Adresse IP : 142.11.206.73

(tous deux bloqués par Malwarebytes )

Fichiers :

  • macOS : /Library/Caches/com.apple.act.mond
  • Linux : /tmp/ld.py 
  • Windows: %PROGRAMDATA%\wt et %TEMP%\6202033.vbs/.ps1, qui n'existent que brièvement pendant l'exécution

Paquets npm malveillants :

axios@1.14.1, somme de contrôle SHA-256 : 2553649f2322049666871cea80a5d0d6adc700ca

axios@0.30.4, somme de contrôle SHA-256 : d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71

plain-crypto-js@4.2.1, somme de contrôle SHA-256 : 07d889e2dadce6f3910dcbc253317d28ca61c766


Nous ne nous contentons pas de signaler les menaces, nous les éliminons.

Les risques de cybersécurité ne devraient jamais se propager au-delà d'un titre. Éliminez les menaces de vos appareils en téléchargeant Malwarebytes dès aujourd'hui.

À propos de l'auteur

Pieter Arntz

Chercheur en intelligence malveillante

A été un Microsoft MVP dans le domaine de la sécurité des consommateurs pendant 12 années consécutives. Parle quatre langues. Sente l'acajou et les livres reliés en cuir.