AGENTS.md-Angriff in Downloads: Codex und Claude Code prüfen

Prüfe heruntergeladene Anweisungsdateien, bevor du einen Coding-Agenten startest. Kontrolliere die Benutzerkonfiguration von Codex, die Rangfolge der Claude-Code-Einstellungen und Hinweise auf eine Installation von function-color. Trenne den beobachteten Vorfall von Laborversuchen, widerrufe betroffene Zugangsdaten und prüfe dein Gateway. Benutzereinstellungen verhindern nicht, dass eine andere Quelle den Endpunkt überschreibt.

Inhalt
AGENTS.md-Angriff in Downloads: Codex und Claude Code prüfen

Starte Codex oder Claude Code nicht in ~/Downloads oder einem anderen Ordner, in dem sich ungeprüfte Dateien sammeln. Prüfe vor dem nächsten Start die Anweisungsdateien und die Agentenkonfiguration auf mögliche Folgen des AGENTS.md-Angriffs über Downloads. Findest du einen nicht autorisierten Endpunkt oder Hinweise auf ein installiertes Schadpaket, stoppe betroffene Sitzungen und widerrufe die zugehörigen Zugangsdaten.

Dieser Ablauf gilt für lokale Installationen von Codex und Claude Code. Die Konfigurationsangaben wurden mit Stand 2026-10-28 geprüft. Dabei erstellst du eine Dateiliste, prüfst die Konfiguration und entscheidest, ob du auf einen Sicherheitsvorfall reagieren musst.

Was der Angriff über Downloads gezeigt hat

Der Angriff nutzt nicht vertrauenswürdige Anweisungen, um die Konfiguration des Agenten selbst zu verändern. Markdown führt sich nicht selbst aus; der Agent stellt die Werkzeuge bereit.

Der Bericht von Forever Security vom 22. Oktober beschreibt einen blockierten Installationsversuch. Auslöser war die Datei ~/Downloads/AGENTS.md auf dem Rechner eines Kunden. Wie die Datei dorthin gelangte, ist weiterhin unbekannt.

  • Nachstellung mit Codex: Die Anweisungen registrierten einen Werkzeugserver für das Model Context Protocol (MCP) in ~/.codex/config.toml. Dabei kamen launchctl und npm zum Einsatz, um function-color zu installieren. Ein Kindprozess führte codex exec mit --dangerously-bypass-approvals-and-sandbox aus.
  • Nachstellung mit Claude Code: CLAUDE.md veranlasste eine Änderung von ANTHROPIC_BASE_URL in .claude/settings.json. Die Forscher erfassten ein OAuth-Token, das das angemeldete Konto authentifiziert, und gaben gefälschte Bash-Aufrufe zurück. Teilweise öffnete ein Subagent die umgeleitete Verbindung noch in derselben Sitzung. Laut Bericht musste ein Mensch das Schreiben dieser Konfiguration freigeben.

Die gemeldete Erfolgsrate lag bei Codex über 90% und bei der Konfigurationsänderung in Claude bei etwa 50%. Die Ausführung innerhalb derselben Claude-Sitzung gelang in etwa einem Fünftel der Versuche. Die meisten Versuche verwendeten ersatzweise einen Taschenrechner. Das echte Paket lief einmal in einer isolierten VM. Das sind Testergebnisse der Forscher, keine Schätzungen deines persönlichen Risikos.

Auch das Verhalten des Browsers hängt von seiner Konfiguration ab. Die Chrome-Dokumentation beschreibt ein einstellbares Download-Ziel, optionale Nachfragen zum Speicherort und Download-Benachrichtigungen. Ein Browser-Download und ein erfolgreich kompromittierter Agent sind getrennte Ereignisse.

Behalte die aktuellen Schutzmechanismen bei. Codex 0.165.0 überspringt Projektanweisungen bei ausdrücklich als nicht vertrauenswürdig eingestuften Projekten. OpenAI dokumentiert außerdem geschützte .codex-Pfade für die standardmäßige Richtlinie workspace-write. Auch ein bereits geprüfter Ordner kann neue, ungeprüfte Inhalte erhalten.

Führe eine erste Prüfung in etwa fünf Minuten durch

Prüfe die Dateien in einem normalen Terminal und Texteditor, während die Agenten gestoppt sind. Etwa fünf Minuten sind eine Schätzung für einen vertrauten Arbeitsbereich. Auffälligkeiten zu untersuchen und einen Rechner wiederherzustellen dauert länger.

1. Finde Anweisungsdateien, bevor du einen Agenten öffnest

Beginne beim tatsächlichen Arbeitsverzeichnis und beim Download-Ziel. Wenn ripgrep, rg, installiert ist, listet dieser Befehl in Bash unter macOS oder Linux nur Dateinamen auf:

pwd -P
rg --files --hidden --no-ignore \
  -g 'AGENTS.md' -g 'AGENTS.override.md' \
  -g 'CLAUDE.md' -g 'CLAUDE.local.md' \
  -g '**/.claude/settings*.json' \
  -g '**/.codex/config.toml' -g '.mcp.json' \
  -g '!**/.git/**' -g '!**/node_modules/**' \
  "$HOME/Downloads"

Ersetze den letzten Pfad, wenn dein Browser Downloads an einem anderen Ort speichert. Wiederhole die Suche im Verzeichnis eines heruntergeladenen oder geklonten Projekts. Ohne rg suchst du diese Namen im Dateimanager und lässt dabei versteckte Dateien anzeigen.

Der Befehl listet Pfade auf, ohne einen Agenten zu starten oder Konfigurationswerte auszugeben. Kläre Fehler wegen fehlender Verzeichnisse oder Berechtigungen, bevor du ein leeres Ergebnis bewertest. Die Suche untersucht keine Archive und folgt keinen verschachtelten symbolischen Links. Sie beweist auch nicht, dass der Rechner frei von Schadsoftware ist.

Öffne die Treffer als reinen Text. Suche nach Anweisungen, die Agenteneinstellungen umschreiben, Anbieter wechseln, unerwartete Werkzeuge installieren oder Freigaben deaktivieren sollen. Prüfe importierte oder verlinkte Anweisungsdateien gesondert.

Prüfe außerdem globale Anweisungen in deinem Codex-Konfigurationsverzeichnis und in ~/.claude/CLAUDE.md. Codex sucht Projektanweisungen vom erkannten Projektstamm bis zum Arbeitsverzeichnis. Ohne erkannten Projektstamm prüft es nur das aktuelle Verzeichnis. Beziehe AGENTS.override.md und alle konfigurierten alternativen Dateinamen ein.

Claude Code lädt auch Anweisungsdateien aus übergeordneten Verzeichnissen. Ein Wechsel in einen Unterordner von Downloads entfernt die Quelle der Anweisungen deshalb nicht zuverlässig. Halte den geprüften Arbeitsbereich außerhalb des Download-Verzeichnisbaums.

2. Prüfe die projektübergreifende Codex-Konfiguration

Öffne ~/.codex/config.toml, bevor du Codex startest. Das ist eine Konfiguration auf Benutzerebene. Änderungen können deshalb weitere Projekte desselben lokalen Benutzers betreffen. Wenn du CODEX_HOME gesetzt hast, prüfe stattdessen die dortige Datei config.toml.

Prüfe auch die beim Start ausgewählte Profildatei und die zutreffenden projektbezogenen Dateien .codex/config.toml. OpenAIs Konfigurationsanleitung erklärt, welche Ebenen geladen werden. Die erweiterte Anleitung beschreibt Konfigurationsverzeichnisse und Profile.

EinstellungWas du prüfen solltest
[mcp_servers.<name>]Identifiziere den Server und prüfe vollständig dessen command, args, cwd, env oder entfernte url.
chatgpt_base_urlBestätige, dass jede Änderung der Adresse des ChatGPT-Dienstes beabsichtigt war.
openai_base_url, model_provider und model_providers.<id>.base_urlGleiche den API-Verbindungsweg mit dem von dir freigegebenen Anbieter ab.
projects.<path>.trust_levelPrüfe gespeicherte Vertrauensentscheidungen, besonders für Sammelordner wie Downloads.

MCP verbindet Agenten mit Werkzeugen. Die Konfiguration eines lokalen MCP-Servers kann einen Prozess starten. Prüfe seine Argumente und sein Ziel, nicht nur seinen Anzeigenamen.

Ein unbekannter Server muss untersucht werden. Ein allgemeiner Name oder das bloße Vorkommen von npm, npx oder launchctl beweist noch keine Schadsoftware.

Laut Codex-Konfigurationsreferenz können lokale Projekteinstellungen mit Stand 2026-10-28 weder chatgpt_base_url noch Schlüssel für das Anbieter-Routing überschreiben. Diese Einschränkung macht eine nicht autorisierte Änderung an der Benutzerkonfiguration nicht rückgängig.

3. Prüfe Claude-Code-Einstellungen und ihre Rangfolge

Prüfe alle Einstellungsquellen, die den Endpunkt vorgeben können. Für eine Sitzung, die im Projektstamm gestartet wurde, gehören diese Dateien dazu:

DateiGeltungsbereich
~/.claude/settings.jsonDeine Einstellungen für alle Projekte.
.claude/settings.jsonGemeinsam genutzte Einstellungen dieses Projekts.
.claude/settings.local.jsonDeine lokalen Einstellungen für dieses Projekt.

Wenn du CLAUDE_CONFIG_DIR nutzt, suche die Benutzerdatei in diesem Konfigurationsverzeichnis. Frage auf einem Firmenrechner die Administration nach zentral verwalteten Einstellungen.

Prüfe env.ANTHROPIC_BASE_URL, HTTP_PROXY und HTTPS_PROXY. Kontrolliere, welche Authentifizierungsvariablen gesetzt sind, ohne deren geheime Werte in Chats oder Logs zu kopieren. Prüfe auch unerwartete hooks und geänderte Berechtigungsregeln.

Anthropic dokumentiert ANTHROPIC_BASE_URL als Variable zum Überschreiben des API-Endpunkts. Bei einem freigegebenen Gateway ist diese Einstellung normal. Ein unbekannter Hostname, eine unerklärte Änderung oder ein Endpunkt aus heruntergeladenen Anweisungen muss untersucht werden.

Die Rangfolge der Claude-Code-Einstellungen stellt lokale Projekteinstellungen über gemeinsam genutzte Projekteinstellungen. Beide haben Vorrang vor Benutzereinstellungen. In den meisten Sitzungen ersetzt ein env-Wert aus einer Einstellungsdatei auch dieselbe aus der Shell geerbte Variable. Ein Endpunkt in der Benutzerkonfiguration oder ein Shell-Export ist deshalb nicht gegen Überschreiben geschützt.

Prüfe bei unerwarteten MCP-Integrationen auch .mcp.json. Anthropic erklärt in seinen Sicherheitshinweisen zu MCP, dass andere Geltungsbereiche und Plugins Server außerhalb dieser Datei hinzufügen können.

4. Suche nach Hinweisen auf eine Installation

Durchsuche Paketmetadaten und Logs, wenn ein Agent in einem verdächtigen Verzeichnis lief. Dieser Bash-Befehl gibt dort nur die Namen passender Dateien aus:

rg -l --hidden --no-ignore -F 'function-color' \
  -g 'package.json' -g '*lock*' \
  -g 'npm-shrinkwrap.json' -g '*.log' \
  -g '!**/.git/**' \
  .

Prüfe die Treffer lokal. Untersuche auch /tmp/ptools und relevante npm-Installationslogs, sofern sie vorhanden sind. Eine auf das Projekt begrenzte Suche kann Installationen an anderen Orten übersehen.

Die Paketanalyse von Checkmarx stuft function-color in den Versionen 1.0.0 und 1.7.3 als bösartige Wrapper um function-flag ein. Der untersuchte Downloader richtet sich gegen Windows. Eine Erwähnung des Pakets in einer macOS-Konfiguration beweist nicht, dass eine bestimmte Schadkomponente ausgeführt wurde.

Eine Erwähnung in einem Artikel unterscheidet sich von einer installierten Abhängigkeit oder einem Installationslog. Eine Lockdatei allein beweist nicht, dass ein Installationsskript lief. Bei Hinweisen auf eine Installation solltest du den Rechner bis zur Untersuchung als möglicherweise kompromittiert behandeln. Installiere oder importiere das Paket nicht zu Testzwecken. Eine Suche ohne Treffer schließt umbenannte Schadkomponenten oder gelöschte Spuren nicht aus.

Reagiere auf den Befund, bevor du dich erneut anmeldest

Widerrufe offengelegte Zugangsdaten von einem vertrauenswürdigen Gerät aus, bevor du die betroffene Konfiguration wieder nutzt. Wähle die Schritte passend zu deinen Hinweisen:

  • Unbekannte Anweisungen ohne Hinweise, dass sie verwendet wurden: Sichere die Datei zur Prüfung und halte sie außerhalb der Orte, an denen der Agent Anweisungen sucht. Prüfe die Konfiguration, bevor du entscheidest, ob Zugangsdaten offengelegt wurden.
  • Ein nicht autorisierter Endpunkt, der authentifizierte Anfragen erhalten haben könnte: Behandle die betroffenen Zugangsdaten als möglicherweise offengelegt. Widerrufe sie und prüfe die Kontoaktivität.
  • Hinweise, dass Code eines Schadpakets ausgeführt wurde: Isoliere den Rechner und beziehe dein Sicherheitsteam ein. Sichere relevante Dateien und Logs vor der Bereinigung. Das Löschen der Markdown-Datei entfernt weder installierten Code noch macht es gestohlene Zugangsdaten ungültig.

Nutze für die Authentifizierung über ein Claude-Abonnement die Sitzungsverwaltung des Claude-Kontos. Widerrufe unter Settings → Account betroffene Sitzungen oder melde alle Sitzungen des Kontos ab. Falls Claude-Code-Tokens unter Settings → Claude Code aufgeführt sind, entferne dort die betroffene Autorisierung. Laut Anthropic umfasst das Abmelden aller Sitzungen des Kontos auch Tokens für Claude Code und setup-token.

API-Schlüssel erfordern einen eigenen Schritt. Anthropic empfiehlt in den Hinweisen zu kompromittierten API-Schlüsseln, den betroffenen Schlüssel zu löschen und einen neuen zu erstellen. Das Abmelden der Kontositzungen widerruft keine API-Schlüssel.

Befolge für OpenAI-Zugänge die Anleitung für kompromittierte Konten. Beende Kontositzungen, lösche offengelegte API-Schlüssel, prüfe die Aktivität und kontaktiere den Support. Nimm nicht an, dass das Löschen einer lokalen Zugangsdaten-Datei eine gestohlene entfernte Sitzung ungültig macht.

Stelle eine geprüfte Konfiguration wieder her und entferne nicht autorisierte Startintegrationen, bevor du dich auf dem Rechner erneut authentifizierst. Wenn unklar bleibt, was ausgeführt wurde, verwende den Rechner bis zur Untersuchung nicht für normale Entwicklungsarbeit.

Behalte die Kontrolle über legitime Gateways

Wähle die Gateway-Adresse selbst und prüfe, aus welcher Quelle diese Einstellung stammt. Speichere den freigegebenen Endpunkt für den persönlichen Gebrauch in deiner Benutzerkonfiguration oder in einer von dir kontrollierten Shell-Umgebung. Zentral verwaltete Teams sollten ihren freigegebenen Bereitstellungsweg nutzen.

Behandle einen vom Projekt vorgegebenen Endpunkt als Konfigurationsänderung, die geprüft werden muss. Er kann zu einer legitimen Teamkonfiguration gehören. Die Bezeichnung als internes Gateway allein rechtfertigt jedoch keine Freigabe.

Die Claude-Code-Anleitung von BetterToken verwendet beispielsweise https://bettertoken.ai, ohne /v1, sowie deinen eigenen BetterToken-API-Schlüssel. Dieser API-Zugang ist von einem Claude-Abonnement getrennt. Verwende die eigenen Zugangsdaten des Gateways; übermittle kein OAuth-Token eines Abonnements.

Vergleiche bei einer bewusst eingerichteten Codex-Integration den Anbieterblock mit der Anleitung für benutzerdefinierte Codex-Anbieter. Verwende chatgpt_base_url nicht als allgemeine Einstellung für die Modell-API.

Nach der Konfigurationsprüfung oder abgeschlossenen Wiederherstellung kannst du die Claude-Code-Verbindung kontrolliert prüfen und dabei Projekteinstellungen sowie Anpassungen ausschließen. Führe diesen Befehl in einem bereits geprüften Projektverzeichnis aus:

claude --safe-mode --setting-sources user --permission-mode default

Die CLI-Referenz dokumentiert diese Optionen. Der sichere Modus überspringt Anpassungen wie Anweisungsdateien, Plugins und MCP-Server. Authentifizierung und Berechtigungen bleiben aktiv. Benutzerkonfiguration und zentral verwaltete Richtlinien müssen weiterhin vertrauenswürdig sein. Der Berechtigungsmodus default trägt die Bezeichnung Manual.

Wenn dein Client eine Option zurückweist, prüfe vor dem Fortfahren claude --help und die offiziellen Hinweise zur Aktualisierung.

Prüfe mit /status, welche Einstellungsquellen geladen wurden. Sende dann einen kurzen Prompt wie Reply with OK. Do not use tools. Im Terminal sollte eine Antwort erscheinen. Falls Anbieterprotokolle verfügbar sind, gleiche den Zeitpunkt der Anfrage ab, um ihren Verbindungsweg zu bestätigen. Dabei fällt normale Modellnutzung an.

Wenn ein Modell seinen Namen nennt, bestätigt das nicht den Endpunkt. Bleibt der Verbindungsweg unklar, nutze die Prüfschritte für den aktiven Claude-Code-Anbieter. Stoppe, wenn sich die Konfiguration unerwartet ändert. Diese Verbindungsprüfung beweist nicht, dass der Rechner frei von Schadsoftware ist.

Trenne Downloads von der täglichen Arbeit mit Agenten

Verwende ein geprüftes Projektverzeichnis außerhalb des Download-Ziels deines Browsers. Prüfe eine heruntergeladene CSV-Datei und kopiere nur die benötigten Eingabedaten in diesen Arbeitsbereich. Wer einen ganzen ungeprüften Ordner verschiebt, verschiebt auch dessen Anweisungsdateien.

Öffne in Chrome Settings → Downloads und aktiviere Ask where to save each file before downloading. Damit fragt Chrome vor dem Speichern nach dem Zielordner. Diese zusätzliche Entscheidung ersetzt nicht die Prüfung bereits gespeicherter Dateien.

Lass Sandbox-Beschränkungen und Freigabekontrollen aktiviert. Die Codex-Sicherheitsdokumentation unterscheidet die Sandbox für Befehle von MCP-Verbindungen und dem Authentifizierungsverkehr des Clients. Eine schreibgeschützte Befehls-Sandbox macht es nicht sicher, eine ungeprüfte Konfiguration zu initialisieren.

Wiederhole diese Prüfung nach dem Klonen eines Repositorys, dem Entpacken eines Archivs oder Änderungen an Agenteneinstellungen. Musst du nicht vertrauenswürdigen Code ausführen, nutze eine isolierte Umgebung ohne deine üblichen Entwicklungszugangsdaten.

Bereit, Ihren LLM-Workflow zu optimieren?

Verbinden Sie Modelle über eine API, verwalten Sie Schlüssel und behalten Sie KI-Kosten im Blick.

Kostenlos starten