Attaque de la chaîne d’approvisionnement sur Axios tire une dépendance malveillante de NPM
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Un paquet npm malveillant, plain-crypto-js@4.2.1, a été publié et plus tard intégré en tant que dépendance transitive à travers des versions compromises du client JavaScript HTTP largement utilisé Axios. Le paquet utilise un script post-install pour livrer un cheval de Troie d’accès à distance multi-étapes ciblant Windows, macOS, et Linux. L’attaque semble avoir reposé sur des jetons npm longue durée, permettant aux acteurs malveillants de pousser des versions malveillantes en dehors du flux de publication habituel du projet. Détecter la dépendance altérée tôt peut stopper le RAT avant son exécution sur les systèmes affectés.
Enquête
Socket Research a effectué une analyse statique de setup.js dropper et a déobfusqué des chaînes de caractères encodées pour exposer le domaine C2, la logique de livraison des charges utiles, et les chemins du système de fichiers ciblés. Les chercheurs ont identifié trois versions compromises d’Axios et deux paquets npm supplémentaires contenant le même code malveillant. Ils ont également extrait des indicateurs réseau, des chemins de fichiers, et des chaînes d’agents utilisateurs pouvant être utilisés pour l’ingénierie de détection et la création de règles.
Atténuation
Les organisations devraient révoquer tous les jetons npm longue durée et pivoter les identifiants pour tous les comptes potentiellement affectés. Les versions compromises d’Axios et tous les paquets qui en dépendent plain-crypto-js@4.2.1 devraient être supprimés ou rétrogradés immédiatement. Les équipes devraient aussi examiner les fichiers de verrouillage, les pipelines CI/CD, et les contrôles de sécurité de la chaîne d’approvisionnement logicielle pour identifier une activité de publication non autorisée et réduire la possibilité de compromission de paquets à l’avenir.
Réponse
Les équipes de sécurité devraient surveiller les journaux d’installation npm pour les références à plain-crypto-js@4.2.1 et les versions affectées d’Axios. Des règles de détection devraient être créées pour l’exécution du hook postinstall, l’accès réseau à sfrclak.com, et la chaîne d’agent utilisateur malveillant. Si une compromission est confirmée, les systèmes affectés devraient être mis en quarantaine, la mémoire volatile collectée pour analyse, et l’hôte réimaginé si le RAT est trouvé.
Flux d’Attaque
Détections
MacOS Suspects – Emplacements et Noms Plist (via file_event)
Vue
Processus Enfant NodeJS Suspects [Windows] (via cmdline)
Vue
Téléversement / Téléchargement de Fichiers à Distance via Outils Standards (via cmdline)
Vue
Modification Suspecte des Permissions de Fichier du Dossier Tmp MacOS (via cmdline)
Vue
Utilisation Suspecte de CURL (via cmdline)
Vue
Exécution Possible par l’Utilisation de chmod et nohup dans une Commande Unique (via cmdline)
Vue
Téléchargements dans des Dossiers Suspects (via cmdline)
Vue
LOLBAS WScript / CScript (via process_creation)
Vue
Possibilité d’Exécution par l’Utilisation de Lignes de Commande PowerShell Cachées (via cmdline)
Vue
Utilisation de Nohup (via cmdline)
Vue
IOCs (Adresse Source IP) pour détecter : Attaque sur la Chaîne d’Approvisionnement Axios Tire une Dépendance Malveillante de npm
Vue
IOCs (Adresse Destination IP) pour détecter : Attaque sur la Chaîne d’Approvisionnement Axios Tire une Dépendance Malveillante de npm
Vue
IOCs (E-mails) pour détecter : Attaque sur la Chaîne d’Approvisionnement Axios Tire une Dépendance Malveillante de npm
Vue
Stratégies d’Évasion PowerShell et VBScript dans les Attaques de Chaîne d’Approvisionnement [Création de Processus Windows]
Vue
Détection de l’Exécution du Hook Postinstall de Paquet npm Malveillant [Création de Processus Linux]
Vue
Détection de Scripts Python Malveillants et de Fichiers Temporaires dans les Attaques de Chaîne d’Approvisionnement Linux [Événement de Fichier Linux]
Vue
Terminal Windows Renommé et VBScript Auto-Supprimé Détecté [Événement de Fichier Windows]
Vue
Exécution de Script PowerShell avec Drapeaux Cachés et Bypass [Powershell Windows]
Vue
Exécution de Simulation
Prérequis : La vérification pré-vol de Télémétrie & Base de Référence doit avoir réussi.
Raisonnement : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTPs identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.
-
Récit et Commandes d’Attaque :
Un attaquant ayant acquis des privilèges utilisateur limités sur une station de travail compromise souhaite télécharger une charge utile VBScript malveillante via un paquet npm légitime (scénario de chaîne d’approvisionnement). Pour éviter la détection générique PowerShell, l’attaquant copie
powershell.exevers un nouveau fichier nommépowershell_renamed.exemais garde la sous-chaîne “powershell” dans le nom de fichier (ainsi leImage|containsvérification correspond toujours). L’attaquant exécute ensuite une recherche “where powershell” pour recenser le chemin du binaire renommé et enfin lance la charge utile VBScript aveccscript //nologopour supprimer la bannière du logo. -
Script de Test de Régression :
# ------------------------------------------------- # Étape 1 : Créer une copie renommée de powershell.exe # ------------------------------------------------- $src = "$env:SystemRootSystem32WindowsPowerShellv1.0powershell.exe" $dst = "$env:Temppowershell_renamed.exe" Copy-Item -Path $src -Destination $dst -Force # ------------------------------------------------- # Étape 2 : Utiliser 'where' pour référencer le binaire renommé # ------------------------------------------------- $whereOutput = & where.exe powershell_renamed Write-Host "PowerShell renommé localisé à : $whereOutput" # ------------------------------------------------- # Étape 3 : Créer une simple charge utile VBScript malveillante # ------------------------------------------------- $vbsPath = "$env:Tempmalicious.vbs" @" Set objShell = CreateObject("WScript.Shell") objShell.Run "cmd.exe /c echo pwned > $env:Temppwned.txt", 0, False "@ | Set-Content -Path $vbsPath -Encoding ASCII # ------------------------------------------------- # Étape 4 : Exécuter le VBScript silencieusement en utilisant cscript //nologo # ------------------------------------------------- & $dst -Command "cscript //nologo `"$vbsPath`"" # ------------------------------------------------- # Fin de la simulation # ------------------------------------------------- -
Commandes de Nettoyage :
# Supprimer le binaire PowerShell renommé Remove-Item -Path "$env:Temppowershell_renamed.exe" -Force -ErrorAction SilentlyContinue # Supprimer le fichier VBScript malveillant Remove-Item -Path "$env:Tempmalicious.vbs" -Force -ErrorAction SilentlyContinue # Supprimer les preuves d'exécution Remove-Item -Path "$env:Temppwned.txt" -Force -ErrorAction SilentlyContinue