SOC Prime Bias: Critico

30 Jul 2026 15:32 UTC

DEV#POPPER RAT Distribuito Attraverso Rilasci Compromessi di Joyfill su npm

Author Photo
SOC Prime Team linkedin icon Segui
DEV#POPPER RAT Distribuito Attraverso Rilasci Compromessi di Joyfill su npm
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

Due versioni beta compromesse del @joyfill pacchetto npm sono state trovate contenenti un impianto JavaScript eseguito al momento dell’importazione. L’impianto utilizza transazioni blockchain attraverso Tron, Aptos e BNB Smart Chain per risolvere e scaricare il trojan di accesso remoto (RAT) DEV#POPPER. La campagna prende di mira le workstation degli sviluppatori e le pipeline CI/CD eseguendo codice dannoso non appena il modulo colpito viene importato.

Indagine

Il Team di Ricerca di Socket ha scoperto la compromissione mentre analizzava le versioni beta di @joyfill/layouts and @joyfill/components. I ricercatori hanno identificato una catena di consegna del payload multistadio che combinava JavaScript offuscato con meccanismi di dispatch basati su blockchain. L’indagine ha collegato il loader iniziale alla famiglia PolinRider e ha confermato che il payload finale apparteneva alla famiglia di malware DEV#POPPER.

Mitigazione

Gli sviluppatori dovrebbero rimuovere immediatamente le @joyfill versioni beta colpite da lockfile, cache dei pacchetti, ambienti di build e artefatti di distribuzione. È consigliato fissare le dipendenze a versioni verificate come @joyfill/layouts@0.1.1 or @joyfill/components@4.0.0-rc24 . I team di sicurezza dovrebbero anche bloccare le versioni compromesse tramite proxy di registro e strumenti di governance delle dipendenze.

Risposta

Qualsiasi sistema che abbia importato i pacchetti compromessi dovrebbe essere isolato, e tutte le credenziali accessibili al processo Node.js compromesso dovrebbero essere ruotate. Gli investigatori dovrebbero ispezionare le applicazioni degli sviluppatori, inclusi VS Code, GitHub Desktop e Discord, per cambiamenti inattesi nei moduli fondamentali. La telemetria di endpoint e CI/CD dovrebbe anche essere revisionata per processi Node.js scollegati, indirizzi C2 noti e traffico RPC blockchain sospetto.

Flusso di Attacco

Esecuzione di Simulazione

Prerequisito: Il Controllo Pre-flight di Telemetria & Baseline deve essere superato.

Motivazione: Questa sezione dettaglia l’esatta esecuzione della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e il resoconto DEVE riflettere direttamente le TTP identificate e mirare a generare esattamente la telemetria prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a una diagnosi errata.

  • Narrativa dell’Attacco & Comandi: L’avversario è riuscito a iniettare codice dannoso in una dipendenza npm ampiamente utilizzata (Compromissione della Catena di Fornitura). Quando uno sviluppatore esegue npm install o avvia un progetto, lo script dannoso si esegue. Lo script tenta inizialmente di nascondere il suo intento assegnando la funzione require a una variabile globale (global.r = require), consentendo di caricare moduli ovunque nell’applicazione senza chiamare funzione require direttamente (offuscamento). Infine, usa child_process.spawn per avviare un processo shell scollegato che si collega nuovamente a un server di Comando & Controllo (C2), tentando di eludere la rilevazione dissociando il processo dannoso dal processo Node.js padre.

  • Script di Test di Regressione:

    #!/bin/bash
    # Script di simulazione per attivare la regola di rilevamento dell'iniezione in Node.js.
    # Questo script crea un file JS dannoso temporaneo e lo esegue tramite Node.js.
    
    MALICIOUS_FILE="malicious_pkg.js"
    
    echo "[+] Creando script Node.js dannoso..."
    cat << 'EOF' > $MALICIOUS_FILE
    // Simulare l'iniezione di un modulo globale (T1027)
    global.r = require;
    
    // Simulare l'esecuzione di un processo scollegato tramite child_process.spawn (T1059.006)
    const cp = require('child_process');
    cp.spawn('bash', ['-c', 'sleep 30 &'], { detached: true, stdio: 'ignore' });
    console.log("[!] Payload dannoso eseguito.");
    EOF
    
    echo "[+] Esecuzione dello script dannoso via Node.js..."
    node $MALICIOUS_FILE
    
    echo "[+] Simulazione completata. Controlla SIEM per Allarme: Rilevazione di Iniezione di Moduli Node.js ed Esecuzione di Processi Scollegati."
  • Comandi di Pulizia:

    # Rimuovere il file dannoso simulato
    rm -f malicious_pkg.js
    # Uccidere qualsiasi processo sleep orfano generato dalla simulazione
    pkill -f "sleep 30"