
L’organisation de recherche en sécurité Socket a détecté le 31 mars une attaque active par compromission de la chaîne d’approvisionnement visant le paquet central npm axios. L’attaquant a compromis le compte npm du principal mainteneur d’axios, jasonsaayman, a publié des versions malveillantes et injecté des dépendances malveillantes, afin de diffuser un cheval de Troie d’accès à distance (RAT) multiplateforme, ciblant les systèmes macOS, Windows et Linux.
(Source : Socket)
Cet incident constitue une attaque de chaîne d’approvisionnement multi-étapes soigneusement orchestrée. L’attaquant s’est d’abord emparé du compte du mainteneur, en modifiant l’adresse e-mail en ifstap@proton.me, puis a utilisé les identifiants d’accès npm volés pour publier manuellement des versions malveillantes, en contournant entièrement le processus de publication officiel d’axios via GitHub Actions + OIDC Trusted Publisher. Les deux versions malveillantes ne correspondent à aucun commit, tag ou enregistrement de publication dans le dépôt GitHub.
Le travail de préparation de l’attaquant est également minutieux : il contrôle un autre compte (nrwise, nrwise@proton.me) qui a d’abord publié il y a environ 18 heures une version leurre propre plain-crypto-js@4.2.0 afin d’établir un historique, puis a publié le 30 mars à 23:59 UTC une version malveillante 4.2.1.
Après exécution du postinstall hook malveillant, le lanceur du RAT (setup.js) se connecte au serveur de commande et contrôle sfrclak[.]com:8000 pour déployer une charge utile spécifique à la plateforme. Une fois l’opération terminée, il s’auto-détruit et remplace package.json par un simple modèle sain, empêchant toute détection d’indices d’infection ultérieurs dans le répertoire node_modules.
Versions du paquet malveillant : axios@1.14.1、axios@0.30.4、plain-crypto-js@4.2.1
Serveur C2 : sfrclak[.]com / 142.11.206.73 / [.]com:8000
Traces d’infection sur macOS : /Library/Caches/com.apple.act.mond
Traces d’infection sur Windows : %PROGRAMDATA%\wt.exe、%TEMP%\6202033.vbs
Traces d’infection sur Linux : /tmp/ld.py
Compte de l’attaquant : jasonsaayman(compromis)、nrwise(compte créé par l’attaquant)
Étant donné que le lanceur malveillant s’auto-détruit après exécution, il est impossible de confirmer l’infection en inspectant le répertoire node_modules. La bonne méthode consiste à vérifier directement si le lockfile (package-lock.json ou yarn.lock) contient des enregistrements des versions axios@1.14.1 ou axios@0.30.4.
Retour à une version saine : pour les utilisateurs 1.x, rétrograder vers axios@1.14.0 ; pour les utilisateurs 0.x, rétrograder vers axios@0.30.3, puis après avoir supprimé le répertoire plain-crypto-js depuis node_modules, réinstaller les dépendances.
Si vous trouvez dans le système des traces d’infection par RAT (com.apple.act.mond、wt.exe、ld.py), n’essayez pas de les supprimer sur place. Il faut reconstruire le système depuis un état connu comme sain et, immédiatement, faire tourner (rotater) tous les identifiants potentiellement exposés, notamment les jetons npm, les clés d’accès AWS, les clés privées SSH, les clés de configuration CI/CD et les valeurs des fichiers .env.
Pour les développeurs de cryptomonnaies et de Web3, axios est une bibliothèque HTTP essentielle utilisée par de nombreux protocoles DeFi pour les frontends, la gestion d’actifs cryptographiques et les services de requête de données on-chain. Un environnement de développement infecté peut conduire à la fuite de clés de portefeuille, de phrases mnémoniques ou de clés API vers l’attaquant ; il est recommandé de prioriser l’audit et la rotation de tous les identifiants sensibles.
Étant donné que le lanceur malveillant s’auto-détruit après exécution, il n’est pas possible de confirmer l’infection en se basant sur le répertoire node_modules. Il faut vérifier directement si le lockfile contient des enregistrements de axios@1.14.1 ou axios@0.30.4, et confirmer si un répertoire plain-crypto-js existe dans node_modules. Il est possible d’exécuter npm list axios ou de rechercher directement la chaîne de version dans le lockfile.
axios est une bibliothèque HTTP couramment utilisée pour les applications front-end Web3 et les interfaces des protocoles DeFi. Un environnement de développement infecté peut exposer des identifiants sensibles tels que des clés privées, des phrases mnémoniques, des clés API d’exchanges ou des configurations CI/CD. Les développeurs concernés doivent prioriser l’audit et la rotation de tous les identifiants liés à la cryptographie susceptibles d’avoir été exposés.
Les mesures de prévention principales incluent : dans le CI/CD, utiliser systématiquement npm ci --ignore-scripts pour désactiver les postinstall hooks ; fixer les versions des paquets de dépendances critiques ; examiner régulièrement l’historique des modifications du lockfile ; et déployer des outils comme Socket, Aikido, etc. pour surveiller en temps réel les logiciels malveillants dans les paquets de dépendances.