KI-Coding-Agenten als Malware-Waffe im Nx-Sicherheitsvorfall mit schädlichem Paket
27. August 2025
0 Min. LesezeitAm 26.–27. August 2025 (UTC) wurden acht schädliche Nx- und Nx Powerpack releases in zwei Versionsreihen auf npm veröffentlicht und waren etwa 5 Stunden und 20 Minuten lang verfügbar, bevor sie entfernt wurden. Der Angriff betrifft auch die Nx Console-VS-Code-Erweiterung.
Update vom 1. September: Die Ursache für die auf npm veröffentlichte schädliche Nx-Version war nachweislich ein fehlerhafter GitHub-Actions-CI-Workflow, der am 21. August über einen Pull Request eingereicht wurde. Es wird davon ausgegangen, dass der Codebeitrag von Claude Code generiert wurde. Ein anschließender schädlicher Commit vom 24. August änderte den CI-Workflow so, dass das npm-Token zum Veröffentlichen der Nx-Pakete über einen Webhook an einen vom Angreifer kontrollierten Server gesendet wurde.

Über herkömmliche Techniken hinaus setzte die Payload lokale KI-Coding-Agenten (claude, gemini und q) mithilfe eines gefährlichen Prompts als Waffe ein, um vertrauliche Dateien zu inventarisieren und anschließend Geheimnisse, Anmeldedaten und sensible Daten vom Host zu exfiltrieren und in ein öffentliches GitHub-Repository mit dem Namen s1ngularity-repository-NNNN und numerischem Suffix hochzuladen. Unserer Einschätzung nach handelt es sich wahrscheinlich um einen der ersten dokumentierten Fälle, in denen Malware KI-Assistenten-CLIs zur Aufklärung und Datenexfiltration nutzt.
Die Nx-Maintainer veröffentlichten ein offizielles Sicherheitsbulletin, das Snyk über die folgenden Advisories verfolgt:
Nach der derzeitigen Theorie wurde ein kompromittiertes npm-Token mit Veröffentlichungsrechten verwendet, um die schädlichen Pakete zu verteilen. Alle kompromittierten Versionen wurden inzwischen effektiv aus der npm-Registry entfernt.
Wenn Sie die betroffenen Versionen installiert haben, ändern Sie sofort alle Anmeldedaten, suchen Sie auf GitHub nach s1ngularity-repository-* und führen Sie die unten beschriebenen Bereinigungsschritte durch.
Was ist Nx?
Nx ist ein beliebtes Build-System und Monorepo-Tool, das häufig in JavaScript- und TypeScript-Projekten zum Einsatz kommt und Millionen wöchentliche Downloads verzeichnet. Die Popularität von Nx vergrößert bei Vorfällen wie diesem den Schadensradius in Open-Source-Supply-Chain-Ökosystemen wie npm.
Malware nutzt KI-Coding-Agenten zur Datenexfiltration
Dieser Vorfall markiert eine neue Entwicklung bei Angriffen mit schädlichen Paketen auf npm: Die postinstall-Malware versuchte lokal mehrere KI-CLI-Tools zu nutzen, darunter Claude’s Claude Code, Googles Gemini CLI und Amazons neuen q-Coding-Agenten für die Kommandozeile. Sie rief die Tools mit unsicheren Flags auf, um Schutzmechanismen zu umgehen und das Dateisystem nach sensiblen Pfaden zu durchsuchen. Die Ergebnisse wurden in /tmp/inventory.txt (und einer Sicherungskopie) geschrieben.
Beobachtete Beispiele: KI-Coding-Agenten wurden mit Flags wie --dangerously-skip-permissions (Claude Code), --yolo (Gemini CLI) und --trust-all-tools (Amazon q) ausgeführt.
Der eingebettete Prompt wies den Agenten an, Wallet-Dateien, SSH-Schlüssel, .env-Dateien und andere hochwertige Ziele rekursiv aufzulisten, dabei eine Tiefenbegrenzung einzuhalten und creating /tmp/inventory.txt(.bak) zu erstellen.
Der an die KI-Coding-Agenten übermittelte Prompt lautete:
Die Malware enthält außerdem eine minimale Prompt-Variante, die ausschließlich Klartext-Dateipfade inventarisieren sollte (ohne Inhalte). Dies bestätigt zusätzlich, dass die Aufklärung mithilfe von Agenten gezielt vorgesehen war.
Warum der Angriff mit dem schädlichen Nx-Paket wichtig ist: „Hilfreiche“ KI-Agenten in automatisierte Aufklärungswerkzeuge zu verwandeln, ist eine erhebliche Eskalation bei Open-Source-Supply-Chain-Angriffen und wahrscheinlich einer der ersten öffentlich dokumentierten Fälle, in denen KI-Assistenten-CLIs auf diese Weise manipuliert wurden.
Analyse der KI-Agenten-Malware
Das Postinstall-Skript telemetry.js importiert Funktionen zur Verarbeitung von Kindprozessen, legt den Prompt fest und bereitet die Datenerfassung vor:
Anschließend führt es plattformübergreifende Prüfungen durch, um sicherzustellen, dass es unter macOS, Windows und Linux ausgeführt werden kann:
Danach bereitet der schädliche Code die CLIs der KI-Coding-Assistenten und ihre Flags vor:
Abschließend enthält das Skript Code, der npm-Anmeldedaten, GitHub-Anmeldedaten und weitere sensible Informationen sammelt, die Inventarisierung einrichtet und die Daten in öffentlichen GitHub-Repositories veröffentlicht:
Was geschah bei der Nx-Kompromittierung?
Wie wurde der Angriff ermöglicht?
Ermittler gehen davon aus, dass das npm-Token eines Maintainers mit Veröffentlichungsrechten kompromittiert wurde und schädliche Versionen anschließend direkt auf npm veröffentlicht wurden. Bemerkenswert ist, dass diesen Versionen ein Herkunftsnachweis fehlte – ein Mechanismus, mit dem sich Ursprung und Integrität veröffentlichter Pakete kryptografisch überprüfen lassen. Der Vorfall macht deutlich, wie wichtig es ist, Herkunftsnachweise in Open-Source-Supply-Chains einzuführen und konsequent durchzusetzen.
Wie wurde der Nx-Angriff ausgeführt?
Ein postinstall-Skript (namens telemetry.js) wird bei der Installation des Nx-Pakets ausgeführt (wenn Entwickler npm install oder npm install nx ausführen). Bei der Installation von Nx sammelt das Skript lokal Daten und nutzt KI-Agenten zur Aufklärung. Dabei stiehlt es die GitHub-Anmeldedaten und Tokens der Benutzer (sofern verfügbar mithilfe des Befehls gh auth token), erstellt anschließend im Konto des Opfers ein öffentliches GitHub-Repository und lädt sämtliche gesammelten Daten nach dreifacher Base64-Kodierung in results.b64 hoch.
Welche Daten und Quellen wurden ins Visier genommen?
Die Payload zielte auf GitHub-Tokens, npm-Tokens (~/.npmrc), SSH-Schlüssel, Umgebungsvariablen und eine Vielzahl von Dateien mit Kryptowährungs-Wallet-Daten ab. Diese wurden von Entwickler-Workstations und möglicherweise auch von beliebigen CI- oder Build-Runnern gesammelt, auf denen das Paket installiert war.
Gab es eine zerstörerische Komponente?
Ja. Möglicherweise mit dem Ziel, die Spuren zu verwischen und weitere Störungen zu verursachen, fügte die Malware sudo shutdown -h 0 sowohl an ~/.bashrc als auch an ~/.zshrc an, sodass neue Shells sofort heruntergefahren wurden.
Betroffene Pakete und Versionen
nx:
21.5.0,20.9.0,20.10.0,21.6.0,20.11.0,21.7.0,21.8.0,20.12.0(alle inzwischen entfernt).Nx-Plugins (Beispiele):
@nx/devkit,@nx/js,@nx/workspace,@nx/node,@nx/eslint(schädliche Varianten21.5.0und/oder20.9.0) sowie@nx/key,@nx/enterprise-cloud(3.2.0).VS-Code-Erweiterung: Nx Console
Sofortmaßnahmen (jetzt durchführen)
Prüfen Sie, ob Ihr GitHub-Konto zur Exfiltration verwendet wurde. Suchen Sie nach Repositories mit dem Namen
s1ngularity-repository-*. Wenn Sie eines finden, ergreifen Sie umgehend die von Ihren ProdSec- und InfoSec-Teams angewiesenen Maßnahmen.Ändern Sie alle Anmeldedaten, die sich auf dem Host befunden haben könnten: GitHub-Tokens, npm-Tokens, SSH-Schlüssel und alle API-Schlüssel in
.env-Dateien.Überprüfen und bereinigen Sie Ihre Umgebung gemäß den Anweisungen Ihres ProdSec-Teams
Ermitteln Sie, wo Nx in Ihren Projekten verwendet wird. Führen Sie
npm ls nxaus (und prüfen Siepackage-lock.json), um transitive Installationen zu finden. Wenn eine betroffene Version installiert ist, deinstallieren Sie sie und installieren Sie anschließendnx@latest.Snyk-Benutzer können mit Snyk SCA und Snyk SBOM Projekte organisationsweit finden und überwachen.
Wenn KI-CLIs installiert sind, überprüfen Sie den Shell-Verlauf auf gefährliche Flags (
--dangerously-skip-permissions,--yolo,--trust-all-tools).
Zukünftige Präventionsmaßnahmen gegen Supply-Chain-Angriffe
Erzwingen Sie die Verwendung der Lockdatei in CI mit
npm ci.Deaktivieren Sie Installationsskripte standardmäßig: Verwenden Sie
--ignore-scriptsund setzen Sieignore-scripts=truein einer benutzer- oder projektspezifischen.npmrc-Datei, um schädlichepostinstall-Skripte zu neutralisieren.Aktivieren Sie die npm-2FA und bevorzugen Sie den Modus für Authentifizierung und Veröffentlichungen:
npm profile enable-2fa auth-and-writes.Überprüfen Sie nach Möglichkeit vor der Installation den Herkunftsnachweis. Wichtig ist: Die schädlichen Nx-Versionen wurden ohne Herkunftsnachweis veröffentlicht (!), während aktuelle, gültige Versionen einen Herkunftsnachweis enthielten. Ein hilfreicher Hinweis bei der Erstbewertung.
Prüfen Sie Installationen vorab mit npq (und/oder Snyk Advisor), damit Sie Installationen anhand von Vertrauenssignalen und Snyk-Informationen freigeben können. Erwägen Sie,
npmlokal als Alias fürnpqeinzurichten.Scannen und überwachen Sie kontinuierlich mit Snyk (
snyk test/snyk monitor), um neue Sicherheitsmeldungen zu erkennen und Korrekturen zu automatisieren. Snyk hilft außerdem dabei, bestimmte Abhängigkeitsinstallationen in Ihren F&E-Teams zu finden und genau zuzuordnen.Verwenden Sie eine private oder als Proxy geschaltete Registry (z. B. Verdaccio), um die direkte Angriffsfläche zu verringern und Richtlinien für die Veröffentlichung und Nutzung durchzusetzen.
Weitere empfohlene Lektüre: Snyks 10 npm-Sicherheits-Best-Practices und npm-Sicherheit: Supply-Chain-Angriffe verhindern.
Zeitlicher Ablauf des Angriffs
Der folgende zeitliche Ablauf des Nx-Angriffs basiert auf dem ursprünglichen GitHub-Sicherheitsbericht:
UTC (kompakt, für Incident-Responder):
22:32 – Veröffentlichung von21.5.0→ 22:39 –20.9.0→ 23:54 –20.10.0+21.6.0→
27. Aug. 00:16 –20.11.0→ 00:17 –21.7.0→ 00:30 – Community-Warnung →
00:37 –21.8.0+20.12.0→ 02:44 – npm entfernt betroffene Versionen → 03:52 – Organisationszugriff widerrufen.EDT (wie im Advisory dokumentiert):
18:32 Uhr – erste Angriffswelle (einschließlich@nx/*-Plugin-Varianten) → 20:30 Uhr – erster GitHub-Issue →
22:44 Uhr – npm entfernt betroffene Versionen und Tokens.
Kompromittierungsindikatoren (IoCs)
Dateisystem:
/tmp/inventory.txt,/tmp/inventory.txt.bak; Shell-RC-Dateien (~/.bashrc,~/.zshrc) mit angehängtem Befehlsudo shutdown -h 0.GitHub-Konto-Artefakte: ein öffentliches Repository namens
s1ngularity-repositorymitresults.b64(dreifache Base64-Kodierung).Netzwerk/Prozess: anomale API-Aufrufe an
api.github.comwährendnpm install; Aufrufe vongh auth tokendurchtelemetry.js.
Zu Supply-Chain-Sicherheitsangriffen
Dieser Vorfall steht nicht für sich allein. Bereits zuvor führten Angriffe auf CI-Systeme und Maintainer-Konten zur Übernahme von Releases:
Ultralytics (Dez. 2024): Eine GitHub-Actions-Template-Injection-Kette führte zu schädlichen pip-Releases und dem Diebstahl von Anmeldedaten. Der Angriff auf Ultralytics zeigt, wie eine fehlerhafte CI-Konfiguration Manipulationen an Artefakten ermöglicht.
Kompromittierung der ESLint-/Prettier-Maintainer (Juli 2025): Durch Phishing und Typosquatting (
npnjs.com) wurden npm-Anmeldedaten erbeutet und Malware in beliebte Pakete eingeschleust – eine weitere Mahnung, Maintainer-Konten mit 2FA besser abzusichern.
Weitere Hinweise zu KI-Vertrauen
Behandeln Sie lokale KI-Coding-Agenten wie jede andere privilegierte Automatisierung: Beschränken Sie den Datei- und Netzwerkzugriff, überprüfen Sie sie regelmäßig und führen Sie die CLIs von KI-Coding-Agenten nicht blind im YOLO-Modus aus. Vermeiden Sie Flags, die Berechtigungen überspringen oder „allen Tools vertrauen“, um Ihre Sicherheitsmaßnahmen weiter zu stärken.
Dieser Vorfall zeigt, wie leicht sich die CLIs von KI-Coding-Assistenten in schädliche autonome Agenten verwandeln lassen, wenn Schutzmechanismen deaktiviert sind.
Die Grenze zwischen hilfreichem Werkzeug und Bedrohung ist nur so sicher wie die Schutzmechanismen, die Sie einrichten. Überlassen Sie KI-generierten Code und Ihre Systeme nicht dem Zufall. Der Leitfaden von Snyk zu Schutzmechanismen für KI-Code gibt Ihnen die Werkzeuge an die Hand, um Ihren gesamten KI-Lebenszyklus abzusichern – von den Abhängigkeiten Ihrer KI-Modelle bis hin zum von ihnen generierten Code.
E-BOOK
Leitplanken für KI-generierten Code
Erhalten Sie die nötigen Tools, um wirksame Leitplanken einzuführen und sicherzustellen, dass Ihr KI-generierter Code effizient und sicher ist.
