Eine AGENTS.md im Download-Ordner kann Codex und Claude Code kapern
Eine Datei namens AGENTS.md im Download-Ordner eines Kunden wies den dort laufenden KI-Coding-Agenten an, ein bösartiges npm-Paket zu installieren. Das berichtete die Sicherheitsfirma Forever Security am 22. Oktober. In ihren eigenen Tests brachte derselbe Trick Codex von OpenAI in mehr als 90% der Versuche dazu, den Befehl des Angreifers auszuführen.
Coding-Agenten wie Codex und Claude Code lesen Anweisungsdateien aus dem Ordner, in dem sie gestartet werden, und behandeln sie als Regeln für die Arbeit. Browser speichern Downloads standardmäßig in genau diesen Ordner, und viele starten ihre Agenten von dort. Laut Forever startet etwa die Hälfte der eigenen Kunden einen Coding-Agenten im Download-Ordner, allein Claude Code öffnete dort auf ihren Rechnern mehr als 1.300 Sitzungen.
Wie die untergeschobene AGENTS.md den Agenten kaperte
Die Datei war 13 KB groß und sah aus wie gewöhnliche Entwicklungsrichtlinien. Gegen Ende tarnte sie eine Installation als Vorbereitung der Werkzeuge vor der Aufgabe des Nutzers: Es ging um das Paket function-color. Forevers Überwachung stoppte die Installation, bevor der Code lief, und das Paket wurde inzwischen von npm entfernt. Wie die Datei auf den Rechner kam, konnten die Forscher nicht klären. Sie zeigten aber, dass eine Webseite ohne Nachfrage eine Datei namens AGENTS.md in den Download-Ordner legen kann: Chrome, Edge und Firefox speichern dort standardmäßig und zeigen nur eine Benachrichtigung, Brave fragte in ihren Tests nach.
Anschließend wiederholten Gal Weizman und Omer Samet den Angriff in einer virtuellen Maschine. Bei Codex forderte die Datei den Agenten auf, einen MCP-Server in ~/.codex/config.toml einzutragen, die globale Konfiguration für alle Codex-Sitzungen auf dem Rechner, sodass der Befehl des Angreifers bei jedem Start liefe. Mit einer harmlosen Nutzlast, die den Taschenrechner öffnete, gelang das in mehr als 90% der Versuche.
Für Claude Code schrieben die Forscher eine CLAUDE.md, die den Agenten bat, in den Projekteinstellungen die Adresse eines angeblich internen Gateways einzutragen. Sobald Claude die Änderung vornahm, gingen seine API-Anfragen samt OAuth-Token des Nutzers an den Server der Forscher. Dieser konnte anstelle des Modells antworten und dem Agenten Befehle schicken, was in etwa der Hälfte der Tests zur Codeausführung führte. Über einen Subagenten gelang die Ausführung in derselben Sitzung in etwa jedem fünften Fall.
Nichts zu patchen für die Hersteller
„Hier gibt es für OpenAI oder Anthropic nichts zu patchen“, schreiben die Forscher. Ein Agent, der der AGENTS.md in seinem Ordner folgt, tut genau das, wofür er gebaut wurde, das Risiko liegt also darin, wo man ihn startet. OpenAI und Anthropic empfehlen, Agenten aus dem Projektordner zu starten, keines der Unternehmen äußerte sich zur Studie. Im August ließ eine andere Lücke in Claude Code ein GitHub-Issue an CI-Geheimnisse gelangen, und beiden Fällen liegt dasselbe Problem zugrunde: Der Agent unterscheidet nicht zwischen Anweisungen des Nutzers und Text, den er nur liest.
Was Sie bei Codex und Claude Code prüfen sollten
- Arbeitsordner: Starten Sie Agenten im Stammordner eines konkreten Projekts, nicht im Download- oder Home-Ordner.
- Anweisungsdateien: Lesen Sie jede AGENTS.md oder CLAUDE.md, die Sie nicht selbst geschrieben haben, bevor ein Agent sie nutzt.
- Codex: Suchen Sie in
~/.codex/config.tomlnach unbekannten[mcp_servers.*]-Blöcken oder einer geändertenchatgpt_base_url. - Claude Code: Prüfen Sie die
.claude/settings.jsondes Projekts auf eine unerwartete API-Adresse wieANTHROPIC_BASE_URL. - Bestätigungen: Lassen Sie Bestätigungsabfragen und Sandbox eingeschaltet und seien Sie misstrauisch, wenn eine Datei den Agenten bittet, sie abzuschalten.
Hat ein Agent eine solche Datei womöglich schon befolgt, reicht Löschen nicht: Die geänderten Einstellungen bleiben bestehen. Entfernen Sie sie von Hand und tauschen Sie Ihre Tokens aus, denn ein abgeflossenes Token funktioniert wie eine aktive Anmeldung. Laut Forever sollte ein Rechner, auf dem function-color installiert ist, als kompromittiert gelten.