Points clés à retenir
- Le compte npm du responsable principal de la maintenance d'Axios a été piraté. Deux versions malveillantes ont été publiées :
axios@1.14.1etaxios@0.30.4. npm a depuis supprimé les deux. - Toute personne ayant installé l'une ou l'autre de ces versions avant leur retrait doit considérer que son système a été compromis. Les versions malveillantes injectent une dépendance (
plain-crypto-js) qui déploie un cheval de Troie d'accès à distance multiplateforme ciblant macOS, Windows et Linux. - Axios enregistre environ 100 millions de téléchargements par semaine. Il s'agit de l'une des attaques de la chaîne d’approvisionnement npm les plus importantes attaques de la chaîne d’approvisionnement recensées attaques de la chaîne d’approvisionnement .
- Le logiciel malveillant s'autodétruit après son exécution ; par conséquent, l'analyse post-infection de
node_modulesJe ne vais pas vous le révéler. Vous devez consulter vos fichiers journaux.
Nous remercions les médias suivants pour leur excellente couverture de cet incident :
- StepSecurity (https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan)
- Socket socket)
Comment vérifier si vous êtes concerné par l'attaque Axios
Option 1) Vérifier manuellement
1. Vérifiez s'il existe des versions malveillantes d'Axios
Analyse vos paquets installés et votre fichier de verrouillage pour 1.14.1 ou 0.30.4.
npm list axios 2>/dev/null | grep -E "1.14.1|0.30.4"
grep -A1 '"axios"' package-lock.json | grep -E "1.14.1|0.30.4"2. Recherchez le paquet de dropper caché
Même si setup.js même s'il s'est supprimé lui-même, le répertoire existe toujours. Sa simple présence confirme que le dropper s'est exécuté.
ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENTIELLEMENT CONCERNÉ"3. Rechercher des traces de RAT sur le disque
macOS
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null && echo "COMPROMIS"Windows
dir "%PROGRAMDATA%\wt.exe" 2>nul && echo COMPROMISLinux
ls -la /tmp/ld.py 2>/dev/null && echo "COMPROMIS"Option 2) Utiliser Aikido gratuit)
Connectez vos référentiels à Aikidohttps://app.aikido.dev). Le Malware Monitor Aikido compare vos dépendances avec le flux de logiciels malveillants en temps réel Aikido . Si axios@1.14.1, axios@0.30.4, ou plain-crypto-js@4.2.1 Si cela apparaît dans l'un de vos projets, Aikido le Aikido immédiatement. Cette fonctionnalité est disponible dans la version gratuite.
Étapes de remédiation
- Ajouter aux versions sécurisées :
npm install axios@1.14.0 # Utilisateurs de la version 1.x
npm install axios@0.30.3 # Utilisateurs de la version 0.x- Ajoutez des règles de remplacement pour empêcher la résolution transitive :
{
"dependencies": { "axios": "1.14.0" },
"overrides": { "axios": "1.14.0" },
"resolutions": { "axios": "1.14.0" }
}- Supprimez
plain-crypto-jsà partir de node_modules :
rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts- Si un artefact RAT est détecté (
com.apple.act.mond,wt.exe,ld.py), n'essayez pas de nettoyer sur place. Reconstruisez à partir d'un état connu pour être correct. - Renouvelez tous les identifiants accessibles sur le système concerné : jetons npm, clés d'accès AWS, clés privées SSH, secrets CI/CD,
.envvaleurs. - Vérifiez les journaux du pipeline CI/CD pour toutes les exécutions au cours desquelles les versions concernées ont été installées. Renouvelez tous les secrets intégrés.
- Exécutez
npm ci --ignore-scriptsdans le cadre d'une politique systématique en matière de CI/CD.
Que s'est-il passé lors de l'attaque de la chaîne d'approvisionnement d'Axios ?
L'attaquant a compromis le jasonsaayman le compte npm, principal responsable de la maintenance d'axios. L'adresse e-mail associée à ce compte a été modifiée pour ifstap@proton.me. L'attaquant a ensuite publié axios@1.14.1 à 00 h 21 UTC le 31 mars et axios@0.30.4 à 01 h 00 UTC. Les branches 1.x et 0.x (ancienne version) ont toutes deux été touchées en l'espace de 39 minutes.
Aucune de ces versions ne correspondait à un commit, une balise ou une version dans le dépôt GitHub d'Axios. Les versions officielles d'Axios sont publiées via GitHub Actions avec une liaison OIDC Trusted Publisher. Celles-ci ont été publiées manuellement à l'aide d'un jeton d'accès npm volé.
La seule modification apportée aux deux versions a été l'ajout de plain-crypto-js@^4.2.1 en tant que dépendance. Ce paquet n'est jamais importé nulle part dans le code source d'Axios. Il existe uniquement pour exécuter un hook post-installation qui déploie un RAT.
La dépendance avait été mise en place environ 18 heures plus tôt par un autre compte de pirate (par ailleurs, nrwise@proton.me). Une version simplifiée (4.2.0) a d'abord été publié pour constituer un historique du registre, puis le programme malveillant 4.2.1 le 30 mars à 23 h 59 UTC.
Le dropper RAT (setup.js) contacte sfrclak[.]com:8000 et déploie des charges utiles spécifiques à la plateforme : un binaire macOS déguisé en démon de cache Apple à l'adresse /Bibliothèque/Caches/com.apple.act.mond, un script PowerShell sous Windows exécuté via un script VBScript caché, dont l'interpréteur a été copié dans %PROGRAMDATA%\wt.exe, ainsi qu'un script Python sous Linux à l'adresse /tmp/ld.py. Une fois exécuté, le dropper s'efface et remplace son propre package.json en effaçant toute trace pour faire disparaître les preuves.
{{cta}}
Indicateurs de compromission (IOC)
Versions et dépendances malveillantes d'Axios :
axios@1.14.1(shasum :2553649f2322049666871cea80a5d0d6adc700ca)axios@0.30.4(shasum :d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71)plain-crypto-js@4.2.1(shasum :07d889e2dadce6f3910dcbc253317d28ca61c766)
Réseau :
- C2:
sfrclak[.]com/142.11.206[.]73/http://sfrclak[.]com:8000/6202033
Système de fichiers :
- macOS :
/Bibliothèque/Caches/com.apple.act.mond- sha256 :
92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
- sha256 :
- Windows :
%PROGRAMDATA%\wt.exe, %TEMP%\6202033.vbs, %TEMP%\6202033.ps1- sha256 :
617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101(PowerShell)
- sha256 :
- Linux :
/tmp/ld.py- sha256 :
fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf
- sha256 :
Comptes des attaquants :
- jasonsaayman : responsable du projet Axios victime d'une intrusion, adresse e-mail désormais ifstap@proton.me
- nrwise : créé par l'attaquant, nrwise@proton.me
Comment se protéger contre l'installation de logiciels malveillants
Chaîne Aikido (https://github.com/AikidoSec/safe-chain) est un outil open source qui s'intègre à npm, yarn et pnpm. Il vérifie chaque paquet par rapport à la base de données de logiciels malveillants Aikido avant qu'il n'atteigne votre machine et impose un délai minimum configurable (48 heures par défaut), bloquant ainsi les versions nouvellement publiées jusqu'à ce qu'elles aient été validées. Dans cette attaque visant Axios, plain-crypto-js@4.2.1 Il n'existait que depuis moins de 24 heures avant que les versions compromises d'Axios ne l'intègrent. Le simple contrôle d'âge de Safe Chain aurait suffi à le bloquer.
Gratuit, aucun jeton requis :
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/latest/download/install-safe-chain.sh | shArticle en cours de rédaction... Restez informé pour les mises à jour.
{{cta}}

