Aikido

Agent Skills verbreiten halluzinierte npx-Befehle

Verfasst von
Charlie Eriksen

Am 14. Januar 2026 habe ich ein npm-Paket namens beansprucht react-codeshift.

Ich war nicht der Autor. Ich hatte nie eine Zeile Code dafür geschrieben. Das Paket hatte nie existiert. Niemand hatte es jemals veröffentlicht. Und doch verwiesen bereits 237 GitHub-Repositorys darauf und wiesen KI-Agenten an, es zu installieren. Einige versuchten es tatsächlich. Ich erhielt Downloads für ein Paket, das ich gerade veröffentlicht hatte, obwohl es leer war. 

Woher kam der Name? Ein LLM hat ihn erfunden. Wie verbreitete er sich auf 237 Repos? Über Agenten-Skill-Dateien. Kopiert, geforkt, ins Japanische übersetzt, nie verifiziert. Ich habe es gefunden und beansprucht, bevor es jemand anderes tun konnte.

Die Recherche

Im Juli 2025 begann ich, mich mit npx-Confusion-Problemen zu beschäftigen.Dabei handelt es sich um npm-Paketnamen, die in Dokumentationen/Code auftauchen, aber nie tatsächlich veröffentlicht wurden. Die Idee war einfach: Scrapen package.json Skripte und README-Dateien überall in npm nach npx <package> Mustern und prüfen, ob diese Pakete tatsächlich existieren. Es stellte sich heraus, dass viele davon nicht existieren.

Dann kam der ganze S1ngularity-Angriff, also legte ich die Forschung beiseite. Die Feiertage kamen, und ich nahm sie wieder auf. Dieser Beitrag behandelt nur einen Zweig dieser Forschung. Mehr folgt.

Hier kommt react-codeshift

Ich nahm die Forschung im Dezember wieder auf und beschloss, sie zu erweitern, um auch GitHub zu indizieren, indem ich nach Referenzen zu npx Befehlen suchte. react-codeshift tauchte häufig auf. Über 200 Repositorys. Als ich es beanspruchte, war diese Zahl auf über 237 angewachsen.

215 Dateien, die auf „npx react-codeshift“ auf GitHub zutreffen

Die Sache ist die: react-codeshift existierte nicht. Nicht, bevor ich es beansprucht hatte. Aber der Name klingt legitim. Zwei echte Pakete existieren jedoch:

🧬 LLM HALLUCINATION
Anatomie einer Halluzination
Wie ein LLM zwei echte Pakete zu einem gefälschten zusammenführte
jscodeshift
Generischer Codemod-Runner
Facebook
+
react-codemod
React-spezifische Transformationen
React Team
=
react-codeshift
Plausibel. Existiert nicht.
🚫 Halluziniert

Ein LLM hat diese zusammengeführt und react-codeshift halluziniert. Ein plausibler Name für ein Tool, das nicht existiert. Ein klassisches Beispiel für

Die Entstehungsgeschichte

Ich habe es auf einen einzigen Commit zurückverfolgt: 65e5cb0 im wshobson/agents Repository, datiert auf den 17. Oktober 2025.

Dieser Commit enthielt 47 von LLMs generierte „Agent Skills“ über 14 Plugins hinweg. Keine offensichtliche menschliche Überprüfung. Mindestens zwei dieser Skills (react-modernization und dependency-upgrade) enthielten Folgendes:

npx react-codeshift --transform=react-codeshift/transforms/rename-unsafe-lifecycles.js ./src

npx react-codeshift --transform=react-codeshift/transforms/new-jsx-transform.js ./src

Sieht legitim aus. Klingt legitim. Die Transform-Pfade spiegeln die Struktur echter Codemods wider.

Nur existierte es nicht.

Skills: Die neue Angriffsfläche

Wir haben Typosquatting und AI-Slop-Pakete gesehen. Dies ist ein echter Fall von Slopsquatting in der Praxis, nicht nur Spekulation. Und es wird über Skills verbreitet.

Skills sind ein neuer Standard: Anthropic's Agent Skills Specification, Claude Code Plugins, MCP-Server. Sie alle verwenden Skill-Dateien, um KI-Agenten Anweisungen zu geben. Diese Dateien sehen aus wie Dokumentationen: Markdown, YAML, Klartextanweisungen.

Aber es sind ausführbare Anweisungen. Wenn ein KI-Agent eine Skill-Datei lädt, folgt er den Befehlen. Er überprüft nicht, ob npx react-codeshift existiert. Er führt es einfach aus.

Wenn npx ein Paket lokal nicht finden kann, fragt es:

Need to install the following packages:  
react-codeshift

Ok to proceed? (y)

Der Agent drückt 'y'. Das würden die meisten Leute auch tun. Agenten sind in dieser Hinsicht genau wie wir. Die Blinden führen die Blinden, und das im großen Stil.

Nachweis aktiver Ausführungsversuche

Nachdem ich das Paket beansprucht hatte, beobachtete ich die Download-Telemetrie:

📊 TELEMETRY
Download-Telemetrie
npm Download-Statistiken nach der Beanspruchung des Phantom-Pakets
~74 4 1 3 1 3
Tag 0 Tag 1 Tag 2 Tag 3 Tag 4 Tag 5
Spiegel / ScannerAgenten-Ausführungsversuche
Normale Phantom-Pakete: 60-100 Downloads an Tag 0, danach null.
react-codeshift: Anhaltender geringer Download-Verkehr = echte Agenten, die versuchen, es zu nutzen.

Normale Pakete verzeichnen am ersten Tag 60-100 Downloads (Registry-Mirrors, Security-Scanner), danach aber null. Niemand versucht tatsächlich, sie zu nutzen.

Aber react-codeshift? Dieser anhaltende geringe Download-Verkehr von 1-4 Downloads pro Tag? Diese sind echt. Das sind KI-Agenten, die Skill-Anweisungen befolgen und npx-Downloads auslösen.

Die Skills werden genutzt. Das halluzinierte Paket wird ausgeführt. Hätte ich es nicht zuerst beansprucht, hätte ein Angreifer dies tun können.

Das Verbreitungsmuster

Alle 237 Repositorys lassen sich auf dieselbe Quelle zurückführen. Das Muster besteht fast ausschließlich aus direkten Forks:

  • wshobson/agents (Ursprung)
  • ~100 Forks behalten den exakten Pfad bei: plugins/framework-migration/skills/react-modernization/SKILL.md
  • Ein Benutzer hat es in über 30 seiner eigenen Repos kopiert.
  • Eine Handvoll Reorganisationen in verschiedene Verzeichnisstrukturen
  • Sogar eine japanische Übersetzung!
  • Ein Repo wechselte zu npx zu bunx. Dasselbe halluzinierte Paket, anderer Runner.

Es ist nicht nur npx

Dasselbe Muster gilt für jeden Paket-Runner:

  • npx react-codeshift
  • bunx react-codeshift
  • pnpm dlx react-codeshift
  • yarn dlx react-codeshift

Sie alle lösen zur selben npm-Registry auf. Sie alle fordern vor der Installation zur Bestätigung auf. Sie alle werden ohne Bedenken genehmigt. Wenn ein LLM einen Paketnamen in einer Form halluziniert, wird es ihn auch in anderen Formen halluzinieren.

Es ist viral, aber oberflächlich. Keine großen Repositorys. Keine hoch bewerteten Projekte. Nur Agents, die Agents beibringen, ein Paket zu verwenden, das nicht existierte. Agents durchgängig. In gewisser Weise ein sich selbst verbesserndes System.

Warum das wichtig ist

Dies war kein massiver Verstoß. Niemand wurde kompromittiert. Das Paket ist jetzt ein sicherer Platzhalter.

Aber es ist eine nützliche Fallstudie, wie sich solche Dinge verbreiten:

  1. LLMs halluzinieren plausible Paketnamen. Insbesondere für domänenspezifische Tools, bei denen die Namenskonventionen vorhersehbar sind.
  2. Skills werden ohne Überprüfung kopiert und eingefügt. Sie sehen aus wie Dokumentation, daher erhalten sie nicht die gleiche Prüfung wie Code.
  3. Agents befolgen Anweisungen wörtlich. Das ist ihre Aufgabe.
  4. npx fordert auf, Menschen stimmen zu. Die Hemmschwelle ist niedrig genug, dass die meisten Leute einfach „y“ drücken.
  5. Nicht beanspruchte Namen werden nach dem Prinzip „Wer zuerst kommt, mahlt zuerst“ vergeben. Jeder kann sie registrieren.

Ich habe diesen zufällig gefunden und beansprucht. Das Muster ist es wert, verstanden zu werden.

🎯 NEUE ANGRIFFSFLÄCHE
Skills: Docs oder Code?
Warum Skill-Dateien eine Code-Überprüfung benötigen und nicht nur einen flüchtigen Blick
👀 Sieht aus wie
📝 Markdown-Dateien
📋 YAML-Configs
📖 Dokumentation
💬 Klartextanweisungen
⚡ Verhält sich wie
💻 Ausführbare Befehle
🤖 Agenten-Anweisungen
🔧 Shell-Skripte
🎯 Angriffsfläche
Behandeln Sie Skills als Code, nicht als Dokumentation.

Was sollten Sie tun?

Wenn Sie Agent-Skills oder KI-Tools pflegen:

  1. Behandeln Sie Skills als Code, nicht als Dokumentation. Überprüfen Sie sie. Auditieren Sie sie. Verwalten Sie sie mit der gleichen Sorgfalt wie Quellcode in der Versionskontrolle.
  2. Verifizieren Sie, dass Paketnamen existieren. Bevor Sie eine npx <package> Anweisung committen, überprüfen Sie, ob das Paket echt ist und von dem veröffentlicht wurde, von dem Sie glauben, dass er es veröffentlicht hat.
  3. Durchsuchen Sie Ihre Codebasis. Führen Sie grep -r "npx react-codeshift" aus und beheben Sie alle Treffer. Ersetzen Sie durch die richtigen Tools:
    • npx jscodeshift für generische Codemods
    • npx react-codemod für React-spezifische Transforms

Indikatoren für Kompromittierung

npm-Paket: react-codeshift

Das Gesamtbild

Skills sind der neue Code. Sie sehen nicht so aus. Sie sind Markdown und YAML und freundliche Anweisungen. Aber sie sind ausführbar. KI-Agenten folgen ihnen, ohne zu fragen: „Existiert dieses Paket tatsächlich?“

Dies war eine Halluzination. Sie verbreitete sich auf 237 Repositorys. Sie erzeugte echte Download-Versuche. Der einzige Grund, warum sie nicht zu einem Angriffsvektor wurde, ist, dass ich zuerst da war.

Die Lieferkette hat gerade ein neues Glied erhalten, das aus LLM-Träumen besteht. Dies ist nur ein Ergebnis der npx-Confusion-Forschung. Mehr folgt.

Teilen:

https://www.aikido.dev/blog/agent-skills-spreading-hallucinated-npx-commands

Abonnieren Sie Bedrohungs-News.

Starten Sie noch heute, kostenlos.

Kostenlos starten
Ohne Kreditkarte
4.7/5
Haben Sie genug von Fehlalarmen?
Probieren Sie Aikido aus, Aikido 100. 000 andere auch.
Jetzt starten
Erhalten Sie eine personalisierte Anleitung

Vertrauen von über 100.000 Teams

Jetzt buchen
Scannen Sie Ihre App auf IDORs und echte Angriffspfade.

Vertrauen von über 100.000 Teams

Scannen starten
Sehen Sie, wie KI Ihre App pentestet

Vertrauen von über 100.000 Teams

Mit dem Testen beginnen

Sicherheit jetzt implementieren

Sichern Sie Ihren Code, Ihre Cloud und Ihre Laufzeit in einem zentralen System.
Finden und beheben Sie Schwachstellen schnell und automatisch.

Keine Kreditkarte erforderlich | Scan-Ergebnisse in 32 Sek.