SOC Prime Bias: Critique

31 Mar 2026 17:31

Attaque de la chaîne d’approvisionnement sur Axios tire une dépendance malveillante de NPM

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
Attaque de la chaîne d’approvisionnement sur Axios tire une dépendance malveillante de NPM
shield icon

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é.

graph TB %% Class definitions classDef technique fill:#c2e0ff classDef tool fill:#ffd9b3 classDef malware fill:#f5b7b1 classDef process fill:#d5f5e3 %% Technique nodes tech_t1195_002[« <b>Technique</b> – <b>T1195.002</b> Compromission de la chaîne d’approvisionnement<br/><b>Description</b>: Compromission des mises à jour ou distributions logicielles. »] class tech_t1195_002 technique tech_t1127_003[« <b>Technique</b> – <b>T1127.003</b> Exécution via outils fiables<br/><b>Description</b>: Script post-install malveillant. »] class tech_t1127_003 technique tech_t1059_004[« <b>Technique</b> – <b>T1059.004</b> Shell Unix »] class tech_t1059_004 technique tech_t1059_001[« <b>Technique</b> – <b>T1059.001</b> PowerShell »] class tech_t1059_001 technique tech_t1059_005[« <b>Technique</b> – <b>T1059.005</b> Visual Basic »] class tech_t1059_005 technique tech_t1059_003[« <b>Technique</b> – <b>T1059.003</b> CMD Windows »] class tech_t1059_003 technique tech_t1027_014[« <b>Technique</b> – <b>T1027.014</b> Obfuscation »] class tech_t1027_014 technique tech_t1070_004[« <b>Technique</b> – <b>T1070.004</b> Suppression de traces »] class tech_t1070_004 technique tech_t1195_001[« <b>Technique</b> – <b>T1195.001</b> Compromission dépendances »] class tech_t1195_001 technique tech_t1127[« <b>Technique</b> – <b>T1127</b> Hooks npm »] class tech_t1127 technique tech_t1082[« <b>Technique</b> – <b>T1082</b> Collecte infos système »] class tech_t1082 technique tech_t1219[« <b>Technique</b> – <b>T1219</b> Accès distant »] class tech_t1219 technique tech_t1102_002[« <b>Technique</b> – <b>T1102.002</b> Communication web »] class tech_t1102_002 technique tech_t1570[« <b>Technique</b> – <b>T1570</b> Mouvement latéral »] class tech_t1570 technique tech_t1036_005[« <b>Technique</b> – <b>T1036.005</b> Déguisement »] class tech_t1036_005 technique tech_t1036_003[« <b>Technique</b> – <b>T1036.003</b> Renommage »] class tech_t1036_003 technique process_curl[« <b>Processus</b> – curl »] class process_curl process process_chmod[« <b>Processus</b> – chmod »] class process_chmod process process_nohup[« <b>Processus</b> – nohup »] class process_nohup process malware_rat[« <b>Malware</b> – macOS RAT »] class malware_rat malware %% Connections unchanged tech_t1195_002 –>|leads_to| tech_t1127_003 tech_t1127_003 –>|uses| tech_t1059_004 tech_t1059_004 –>|executes| tech_t1059_001 tech_t1059_004 –>|executes| tech_t1059_005 tech_t1059_004 –>|executes| tech_t1059_003 tech_t1059_004 –>|employs| tech_t1027_014 tech_t1059_004 –>|leverages| tech_t1195_001 tech_t1059_004 –>|leverages| tech_t1127 tech_t1059_004 –>|collects| tech_t1082 tech_t1027_014 –>|enables| tech_t1070_004 tech_t1082 –>|enables| tech_t1219 tech_t1219 –>|communicates via| tech_t1102_002 tech_t1102_002 –>|facilitates| tech_t1570 tech_t1570 –>|results in| tech_t1036_005 tech_t1570 –>|results in| tech_t1036_003 tech_t1059_004 –>|downloads| process_curl tech_t1059_004 –>|sets permissions| process_chmod tech_t1059_004 –>|runs background| process_nohup malware_rat –>|is the| tech_t1219

Flux d’Attaque

Détections

MacOS Suspects – Emplacements et Noms Plist (via file_event)

Équipe SOC Prime
31 Mar 2026

Processus Enfant NodeJS Suspects [Windows] (via cmdline)

Équipe SOC Prime
31 Mar 2026

Téléversement / Téléchargement de Fichiers à Distance via Outils Standards (via cmdline)

Équipe SOC Prime
31 Mar 2026

Modification Suspecte des Permissions de Fichier du Dossier Tmp MacOS (via cmdline)

Équipe SOC Prime
31 Mar 2026

Utilisation Suspecte de CURL (via cmdline)

Équipe SOC Prime
31 Mar 2026

Exécution Possible par l’Utilisation de chmod et nohup dans une Commande Unique (via cmdline)

Équipe SOC Prime
31 Mar 2026

Téléchargements dans des Dossiers Suspects (via cmdline)

Équipe SOC Prime
31 Mar 2026

LOLBAS WScript / CScript (via process_creation)

Équipe SOC Prime
31 Mar 2026

Possibilité d’Exécution par l’Utilisation de Lignes de Commande PowerShell Cachées (via cmdline)

Équipe SOC Prime
31 Mar 2026

Utilisation de Nohup (via cmdline)

Équipe SOC Prime
31 Mar 2026

IOCs (Adresse Source IP) pour détecter : Attaque sur la Chaîne d’Approvisionnement Axios Tire une Dépendance Malveillante de npm

Règles AI de SOC Prime
31 Mar 2026

IOCs (Adresse Destination IP) pour détecter : Attaque sur la Chaîne d’Approvisionnement Axios Tire une Dépendance Malveillante de npm

Règles AI de SOC Prime
31 Mar 2026

IOCs (E-mails) pour détecter : Attaque sur la Chaîne d’Approvisionnement Axios Tire une Dépendance Malveillante de npm

Règles AI de SOC Prime
31 Mar 2026

Stratégies d’Évasion PowerShell et VBScript dans les Attaques de Chaîne d’Approvisionnement [Création de Processus Windows]

Règles AI de SOC Prime
31 Mar 2026

Détection de l’Exécution du Hook Postinstall de Paquet npm Malveillant [Création de Processus Linux]

Règles AI de SOC Prime
31 Mar 2026

Détection de Scripts Python Malveillants et de Fichiers Temporaires dans les Attaques de Chaîne d’Approvisionnement Linux [Événement de Fichier Linux]

Règles AI de SOC Prime
31 Mar 2026

Terminal Windows Renommé et VBScript Auto-Supprimé Détecté [Événement de Fichier Windows]

Règles AI de SOC Prime
31 Mar 2026

Exécution de Script PowerShell avec Drapeaux Cachés et Bypass [Powershell Windows]

Règles AI de SOC Prime
31 Mar 2026

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.exe vers un nouveau fichier nommé powershell_renamed.exe mais garde la sous-chaîne “powershell” dans le nom de fichier (ainsi le Image|contains vé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 avec cscript //nologo pour 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