SOC Prime Bias: Kritisch

30 Jul 2026 15:32 UTC

DEV#POPPER RAT Über Kompromittierte Joyfill-npm-Releases Geliefert

Author Photo
SOC Prime Team linkedin icon Folgen
DEV#POPPER RAT Über Kompromittierte Joyfill-npm-Releases Geliefert
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Zwei kompromittierte Beta-Versionen des @joyfill npm-Pakets wurden gefunden, die ein JavaScript-Implantat zur Importzeit enthalten. Das Implantat nutzt Blockchain-Transaktionen über Tron, Aptos und BNB Smart Chain, um den DEV#POPPER Remote Access Trojan (RAT) aufzulösen und herunterzuladen. Die Kampagne zielt auf Entwicklerarbeitsstationen und CI/CD-Pipelines, indem sie bösartigen Code ausführt, sobald das betroffene Modul importiert wird.

Untersuchung

Das Socket-Forschungsteam entdeckte den Kompromiss bei der Analyse von Beta-Versionen von @joyfill/layouts and @joyfill/components. Forscher identifizierten eine mehrstufige Nutzlastlieferkette, die verschleiertes JavaScript mit Blockchain-gestützten Dispatch-Mechanismen kombinierte. Die Untersuchung verknüpfte den initialen Loader mit der PolinRider-Familie und bestätigte, dass die endgültige Nutzlast zur DEV#POPPER-Malware-Familie gehörte.

Minderung

Entwickler sollten die betroffenen @joyfill Beta-Versionen sofort aus Sperrdateien, Paket-Caches, Build-Umgebungen und Bereitstellungsartefakten entfernen. Das Festlegen von Abhängigkeiten auf verifizierte Versionen wie @joyfill/layouts@0.1.1 or @joyfill/components@4.0.0-rc24 wird empfohlen. Sicherheitsteams sollten auch die kompromittierten Versionen durch Registry-Proxys und Abhängigkeitsverwaltungstools blockieren.

Antwort

Jedes System, das die betroffenen Pakete importiert hat, sollte isoliert werden, und alle Anmeldeinformationen, die für den kompromittierten Node.js-Prozess zugänglich sind, sollten geändert werden. Ermittler sollten Entwickleranwendungen wie VS Code, GitHub Desktop und Discord auf unerwartete Änderungen an Kernmodulen untersuchen. Endpoint- und CI/CD-Telemetrie sollten ebenfalls auf getrennte Node.js-Prozesse, bekannte C2-Adressen und verdächtigen Blockchain-RPC-Verkehr überprüft werden.

Angriffsablauf

Simulationsausführung

Voraussetzung: Die Telemetrie- und Basis-Prüfung muss bestanden sein.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Gegnertechnik (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und die Erzählung MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, genau die Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.

  • Angriffserzählung & Befehle: Der Angreifer hat erfolgreich bösartigen Code in eine weit verbreitete npm-Abhängigkeit injiziert (Lieferkettenkompromiss). Wenn ein Entwickler npm install ausführt oder ein Projekt startet, wird das bösartige Skript ausgeführt. Das Skript versucht zuerst, seine Absicht zu verbergen, indem es die require Funktion einer globalen Variablen zuweist (global.r = require), was es ihm erlaubt, Module an beliebiger Stelle in der Anwendung zu laden, ohne require direkt aufzurufen (Verschleierung). Schließlich verwendet es child_process.spawn , um einen getrennten Shell-Prozess zu starten, der sich mit einem Command & Control (C2)-Server verbindet und versucht, die Erkennung zu umgehen, indem der bösartige Prozess vom übergeordneten Node.js-Prozess getrennt wird.

  • Regressionstest-Skript:

    #!/bin/bash
    # Simulationsskript zum Auslösen der Node.js-Injektions-Erkennungsregel.
    # Dieses Skript erstellt eine temporäre bösartige JS-Datei und führt sie über Node.js aus.
    MALICIOUS_FILE="malicious_pkg.js"
    echo "[+] Erstellen des bösartigen Node.js-Skripts..."
    cat << 'EOF' > $MALICIOUS_FILE
    // Simulation der globalen Modul-Injektion (T1027)
    global.r = require;
    // Simulation der Ausführung eines getrennten Prozesses über child_process.spawn (T1059.006)
    const cp = require('child_process');
    cp.spawn('bash', ['-c', 'sleep 30 &'], { detached: true, stdio: 'ignore' });
    console.log("[!] Bösartige Nutzlast ausgeführt.");
    EOF
    echo "[+] Ausführen des bösartigen Skripts via Node.js..."
    node $MALICIOUS_FILE
    echo "[+] Simulation abgeschlossen. Überprüfen Sie das SIEM auf Warnungen: Erkennung von Node.js-Modul-Injektion und Ausführung von getrennten Prozessen."
  • Bereinigungsbefehle:

    # Entfernen der simulierten bösartigen Datei
    rm -f malicious_pkg.js
    # Alle verwaisten Schlafprozesse beenden, die durch die Simulation entstanden sind
    pkill -f "sleep 30"