Miasma-Lieferkettenangriff breitet sich durch den Phantom-Gyp-Wurm aus
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 michErkennungen
Remote-Datei-Upload/Download über Standard-Tools (via cmdline)
Ansicht
Linux-Skript wurde in temporären Ordnern erstellt (via file_event)
Ansicht
Versteckte Datei wurde auf Linux-Host erstellt (via file_event)
Ansicht
IOCs (HashSha256) zur Erkennung: Miasma npm Lieferkettenangriff: Selbstverbreitender Wurm über Phantom Gyp
Ansicht
IOCs (HashMd5) zur Erkennung: Miasma npm Lieferkettenangriff: Selbstverbreitender Wurm über Phantom Gyp
Ansicht
Miasma Npm Lieferkettenangriffserkennung [Netzwerkindikatoren]
Ansicht
Miasma npm Lieferkettenangriffserkennung über die Phantom Gyp-Technik [Linux-Prozesserstellung]
Ansicht
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ösartigesbinding.gyphinzu. Wenn ein Entwicklernpm installausführt, ruft der Build-Prozess des Paketsnode-gyp rebuildauf. Innerhalb des generierten Build-Skripts:- lädt der Angreifer die Bun-Laufzeit (signiertes Binär) über
curlin ein temporäres Verzeichnis (/tmp/b-<rand>/). - 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. - zu platzieren. Erntet das GitHub-Token des Entwicklers unter Verwendung von
gh auth token. - . 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ältListe. - lädt der Angreifer die Bun-Laufzeit (signiertes Binär) über
-
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."