SOC Prime Bias: Kritisch

05 Jun 2026 15:45 UTC

Miasma-Lieferkettenangriff breitet sich durch den Phantom-Gyp-Wurm aus

Author Photo
SOC Prime Team linkedin icon Folgen
Miasma-Lieferkettenangriff breitet sich durch den Phantom-Gyp-Wurm aus
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Eine neue Variante des Miasma-Wurms verbreitet sich im npm-Ökosystem, indem sie einen böswilligen binding.gyp Datei ausnutzt, die während npm installeine Code-Ausführung auslöst. Diese Methode umgeht viele traditionelle skriptbasierte Überprüfungen, lädt eine alternative Bun-Laufzeit herunter, stiehlt CI/CD- und Cloud-Anmeldeinformationen und sendet die gesammelten Daten an ein GitHub-Dead-Drop-Konto. Mehr als 57 Pakete wurden während einer sich schnell entfaltenden Kampagne kompromittiert, die in weniger als zwei Stunden am 3. Juni 2026 stattfand. Der Wurm pflanzt auch Hintertüren in Konfigurationsdateien von AI-Coding-Assistenten ein.

Untersuchung

Forscher rekonstruierten den Eindringversuch innerhalb eines gehärteten GitHub Actions Runners und erfassten den gesamten Prozessbaum, den Netzwerkverkehr und die bei dem Angriff beteiligten Code-Artefakte. Ihre Analyse enthüllte die Phantom Gyp-Technik, eine vierstufige obfuskierte Payload-Kette und die Verwendung von Bun, um Erkennungsmethoden zu umgehen, die sich ausschließlich auf das Verhalten von Node.js konzentrieren. Der Diebstahl von Anmeldeinformationen erfolgte durch das Auslesen des Runner-Speichers und das Abfragen von Metadaten-Endpunkten von Cloud-Instanzen. Die Datenexfiltration erfolgte dann über authentifizierte GitHub-API-Anfragen an ein bösartiges Konto, das dynamisch Repositories erstellte, um die gestohlenen Daten zu speichern.

Minderung

Verteidiger sollten die Exposition reduzieren, indem sie native Build-Schritte blockieren, node-gyp wo möglich deaktivieren oder Installationsskripte in Hochrisiko-Umgebungen ignorieren. Registry-Abkühlungszeiten und die Überprüfung von SLSA-Herkunftssignaturen können ebenfalls helfen, eine Manipulation von Paketen einzuschränken. Sicherheitsteams sollten auf unerwartete Bun-Downloads, übergroße Root- index.js -Dateien und die Erstellung neuer GitHub-Repositories durch CI-ausgestellte Tokens achten. Jegliche offengelegten Tokens oder Cloud-Anmeldeinformationen sollten sofort rotiert werden.

Reaktion

Organisationen sollten binding.gyp Dateien mit Mustern wie <!(node index.js ...)erkennen, bei Bun-Laufzeitdownloads warnen und den betroffenen Workflow stoppen, sobald bösartige Aktivitäten bestätigt sind. Repositories sollten auf injizierte Konfigurationsdateien von AI-Assistenten gescannt und schnell bereinigt werden. Alle gestohlenen Tokens müssen widerrufen und rotiert, CI/CD-Berechtigungsbereiche überprüft und eine vollständige Incident-Response-Untersuchung eingeleitet werden, um das Ausmaß der Anmeldeinformations-Exposition zu bestimmen.

Angriffsablauf

Wir aktualisieren diesen Abschnitt noch. Melden Sie sich an, um benachrichtigt zu werden

Benachrichtige mich

Simulationsdurchführung

Voraussetzung: Der Telemetrie- & Baseline-Vorab-Check muss bestanden sein.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Angriffstechnik (TTP), die entworfen wurde, um die Erkennungsregel auszulösen. Die Befehle und Erzählung MÜSSEN die identifizierten TTPs direkt reflektieren und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.

  • Angriffserzählung & Befehle:
    Ein Angreifer kompromittiert ein Open-Source npm-Paket und fügt ein bösartiges binding.gyphinzu. Wenn ein Entwickler npm installausführt, ruft der Build-Prozess des Pakets node-gyp rebuildauf. Innerhalb des generierten Build-Skripts:

    1. lädt der Angreifer die Bun-Laufzeit (signiertes Binär) über curl in ein temporäres Verzeichnis (/tmp/b-<rand>/).
    2. Erhöht die Rechte durch die Ausführung von sudo python3 , um die Zip-Datei zu entpacken und das Binär in /usr/local/bin.
    3. zu platzieren. Erntet das GitHub-Token des Entwicklers unter Verwendung von gh auth token.
    4. . Führt eine Nutzlast aus (bun run /tmp/p1764ajw42rg.js), die Daten exfiltriert.

    Jeder Schritt erscheint wortgenau in den Prozess-Erstellungsprotokollen und erfüllt die Sigma-Regel enthält Liste.

  • Regression Test-Skript: Das folgende Bash-Skript reproduziert die genaue Befehlskette in einer kontrollierten Laborumgebung.

    # miasma_phantom_gyp_simulation.sh
    set -euo pipefail
    
    # 1. Erstellen eines gefälschten npm-Pakets mit bösartigem binding.gyp
    PKG_DIR=$(mktemp -d /tmp/miasma_pkg.XXXX)
    cd "$PKG_DIR"
    npm init -y >/dev/null 2>&1
    cat > binding.gyp <<'EOF'
    {
      "targets": [
        {
          "target_name": "evil",
          "sources": [ "evil.c" ]
        }
      ]
    }
    EOF
    echo "int main(){return 0;}" > evil.c
    # Installiere node-gyp lokal
    npm install node-gyp >/dev/null 2>&1
    
    # 2. Führe node-gyp rebuild aus (erster Indikator)
    ./node_modules/.bin/node-gyp rebuild
    
    # 3. Lade Bun-Laufzeit herunter (zweiter Indikator)
    TMPDIR=$(mktemp -d /tmp/b-XXXXXX)
    curl -sSL "https://github.com/oven-sh/bun/releases/download/bun-v1.3.13/bun-linux-x64-baseline.zip" -o "$TMPDIR/bun.zip"
    
    # 4. Erhöhe mit sudo python3, um zu entpacken (dritter Indikator)
    sudo python3 - <<PYTHON
    import zipfile, sys, os
    zip_path = os.getenv('TMPDIR') + '/bun.zip'
    with zipfile.ZipFile(zip_path, 'r') as z:
    z.extractall(os.getenv('TMPDIR'))
    PYTHON
    
    # 5. Erhalte GitHub-Token (vierter Indikator)
    # Hinweis: Dies erfordert die Installation und vorherige Authentifizierung der GitHub-CLI.
    gh auth token > "$TMPDIR/gh_token.txt"
    
    # 6. Führe bösartige Nutzlast über Bun aus (fünfter Indikator)
    # Erstelle eine Dummy-JS-Nutzlast
    echo "console.log('exfiltrated');" > "$TMPDIR/p1764ajw42rg.js"
    "$TMPDIR/bun" run "$TMPDIR/p1764ajw42rg.js"
    
    echo "Simulation abgeschlossen. Überprüfen Sie Ihr SIEM auf die generierten Warnungen."
  • Befehle zur Bereinigung: Entfernen Sie temporäre Artefakte und rückgängige Privilegieneskalations-Artefakte.

    # cleanup_miasma_simulation.sh
    set -euo pipefail
    
    # Entfernen von temporären Verzeichnissen
    rm -rf "$PKG_DIR" "$TMPDIR"
    
    # Optional das installierte Bun-Binär aus /usr/local/bin entfernen, falls es dort platziert wurde
    if command -v bun >/dev/null; then
        sudo rm -f "$(command -v bun)"
    fi
    
    # Jegliche erfassten GitHub-Token löschen
    shred -u "$HOME/.config/gh/hosts.yml" 2>/dev/null || true
    
    echo "Bereinigung abgeschlossen."