SOC Prime Bias: Critical

30 Jul 2026 15:32 UTC

DEV#POPPER RAT Distribué via des Versions Compromises de Joyfill npm

Author Photo
SOC Prime Team linkedin icon Suivre
DEV#POPPER RAT Distribué via des Versions Compromises de Joyfill npm
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Deux versions bêta compromises du @joyfill package npm ont été trouvées contenant un implant JavaScript lors de l’importation. L’implant utilise des transactions blockchain sur Tron, Aptos et BNB Smart Chain pour résoudre et télécharger le cheval de Troie d’accès à distance (RAT) DEV#POPPER. La campagne cible les postes de travail des développeurs et les pipelines CI/CD en exécutant du code malveillant dès que le module affecté est importé.

Enquête

L’équipe de recherche de Socket a découvert la compromission lors de l’analyse des versions bêta de @joyfill/layouts and @joyfill/components. Les chercheurs ont identifié une chaîne de livraison de charge utile en plusieurs étapes combinant du JavaScript obfusqué avec des mécanismes de distribution basés sur la blockchain. L’enquête a lié le chargeur initial à la famille PolinRider et a confirmé que la charge utile finale appartenait à la famille de logiciels malveillants DEV#POPPER.

Atténuation

Les développeurs devraient immédiatement supprimer les @joyfill versions bêta affectées des lockfiles, des caches de packages, des environnements de construction et des artefacts de déploiement. Il est recommandé de verrouiller les dépendances à des versions vérifiées telles que @joyfill/layouts@0.1.1 or @joyfill/components@4.0.0-rc24 . Les équipes de sécurité devraient également bloquer les versions compromises via des proxys de registre et des outils de gouvernance des dépendances.

Réponse

Tout système ayant importé les packages affectés doit être isolé, et toutes les informations d’identification accessibles au processus Node.js compromis doivent être remplacées. Les enquêteurs devraient inspecter les applications de développeurs, y compris VS Code, GitHub Desktop et Discord, pour des modifications inattendues des modules de base. La télémétrie des points de terminaison et CI/CD devrait également être examinée pour des processus Node.js détachés, des adresses C2 connues et un trafic RPC blockchain suspect.

Flux d’Attaque

Détections

Tentative possible d’abus Ethereum Publicnode comme canal C2 (via dns_query)

Équipe SOC Prime
29 juil. 2026

Tentatives de communication de domaine de recherche IP possibles (via dns)

Équipe SOC Prime
29 juil. 2026

Une capture d’écran Linux possible a été prise (via cmdline)

Équipe SOC Prime
29 juil. 2026

Un fichier caché a été créé sur l’hôte Linux (via file_event)

Équipe SOC Prime
29 juil. 2026

IOC (HashSha256) à détecter : Deux versions bêta de Joyfill npm compromises pour livrer le cheval de Troie d’accès à distance DEV#POPPER

Règles AI SOC Prime
29 juil. 2026

IOC (SourceIP) à détecter : Deux versions bêta de Joyfill npm compromises pour livrer le cheval de Troie d’accès à distance DEV#POPPER

Règles AI SOC Prime
29 juil. 2026

IOCs (DestinationIP) à détecter : Deux versions bêta de Joyfill npm compromises pour livrer le cheval de Troie d’accès à distance DEV#POPPER

Règles AI SOC Prime
29 juil. 2026

Détection des indicateurs de logiciels malveillants DEV#POPPER [Connexion réseau Windows]

Règles AI SOC Prime
29 juil. 2026

Détection des packages npm Joyfill compromis délivrant un cheval de Troie d’accès à distance [Événement de fichier Linux]

Règles AI SOC Prime
29 juil. 2026

Détection d’injection de module Node.js et exécution de processus détaché [Création de processus Linux]

Règles AI SOC Prime
29 juil. 2026

Exécution de la simulation

Prérequis : Le contrôle pré-vol Télémétrie et Baseline doit avoir réussi.

Rationale : 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 exactement la télémétrie attendue par la logique de détection. Des exemples abstraits ou non pertinents conduiront à un mauvais diagnostic.

  • Narratif & Commandes d’Attaque : L’adversaire a réussi à injecter du code malveillant dans une dépendance npm largement utilisée (Compromission de la chaîne d’approvisionnement). Lorsqu’un développeur exécute npm install ou démarre un projet, le script malveillant s’exécute. Le script tente d’abord de masquer son intention en attribuant la fonction require à une variable globale (global.r = require), lui permettant de charger des modules partout dans l’application sans appeler require directement (obfuscation). Enfin, il utilise child_process.spawn pour lancer un processus shell détaché qui se connecte à un serveur de Commande & Contrôle (C2), tentant d’échapper à la détection en découplant le processus malveillant du processus parent Node.js.

  • Script de test de régression :

    #!/bin/bash
    # Script de simulation pour déclencher la règle de détection d'injection de Node.js.
    # Ce script crée un fichier JS malveillant temporaire et l'exécute via Node.js.
    MALICIOUS_FILE="malicious_pkg.js"
    echo "[+] Création du script Node.js malveillant..."
    cat << 'EOF' > $MALICIOUS_FILE
    // Simuler l'injection de module global (T1027)
    global.r = require;
    // Simuler l'exécution de processus détaché via child_process.spawn (T1059.006)
    const cp = require('child_process');
    cp.spawn('bash', ['-c', 'sleep 30 &'], { detached: true, stdio: 'ignore' });
    console.log("[!] Charge utile malveillante exécutée.");
    EOF
    echo "[+] Exécution du script malveillant via Node.js..."
    node $MALICIOUS_FILE
    echo "[+] Simulation terminée. Vérifiez SIEM pour l'alerte : Détection d'injection de module Node.js et exécution de processus détaché."
  • Commandes de nettoyage :

    # Supprimer le fichier malveillant simulé
    rm -f malicious_pkg.js
    # Tuer les processus sleep orphelins lancés par la simulation
    pkill -f "sleep 30"