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-Repositories 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 damit zu beschäftigen. Probleme mit npx-VerwirrungDies sind npm-Paketnamen, die in der Dokumentation/im Code vorkommen, aber nie tatsächlich veröffentlicht wurden. Die Idee war einfach: scrape 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 es zu dem ganzen S1ngularity-Angriff, sodass ich die Forschung zurückstellte. Jetzt, wo die Feiertage vor der Tür stehen, habe ich sie wieder aufgenommen. Dieser Beitrag behandelt nur einen Teil dieser Forschung. Weitere werden folgen.
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 Repositories. Als ich es beanspruchte, war diese Zahl auf über 237 angewachsen.

Die Sache ist die: react-codeshift existierte nicht. Nicht, bevor ich es beansprucht hatte. Aber der Name klingt legitim. Zwei echte Pakete existieren jedoch:
Ein LLM hat diese beiden Begriffe miteinander vermischt und dabei „react-codeshift“ halluziniert. Ein plausibler Name für ein Tool, das es nicht gibt. Ein Klassiker.
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 ./srcSieht 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, keine reine 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:
Normale Pakete werden am ersten Tag 60 bis 100 Mal heruntergeladen (Registry-Mirrors, Sicherheitsscanner), danach gar nicht mehr. Niemand versucht tatsächlich, sie zu verwenden.
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 Repositories 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
npxzubunx. Dasselbe halluzinierte Paket, anderer Runner.
Es ist nicht nur npx
Dasselbe Muster gilt für jeden Paket-Runner:
npx react-codeshiftbunx react-codeshiftpnpm dlx react-codeshiftyarn 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 Repositories. 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:
- LLMs halluzinieren plausible Paketnamen. Insbesondere für domänenspezifische Tools, bei denen die Namenskonventionen vorhersehbar sind.
- Skills werden ohne Überprüfung kopiert und eingefügt. Sie sehen aus wie Dokumentation, daher erhalten sie nicht die gleiche Prüfung wie Code.
- Agents befolgen Anweisungen wörtlich. Das ist ihre Aufgabe.
- npx fordert auf, Menschen stimmen zu. Die Hemmschwelle ist niedrig genug, dass die meisten Leute einfach „y“ drücken.
- 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.
Was sollten Sie tun?
Wenn Sie Agent-Skills oder KI-Tools pflegen:
- 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.
- 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. - 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 jscodeshiftfür generische Codemodsnpx react-codemodfü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 Repositories. 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 bekommen, das aus LLM-Träumen besteht. Dies ist nur eine Erkenntnis aus der npx-Verwirrungsforschung. Weitere folgen.
Sichern Sie Ihre Software jetzt.



.avif)
