ai newsMo., 26. Okt.
EilmeldungHow I Ship Full-Stack Web Apps as a Vibe Coder Using Claude Code and Modern Cloud

Web Pages Can Command AI Coding Agents: Over 90% Success Through the Downloads Folder

Browsers save files to Downloads without user interaction, while AI agents automatically follow instruction files. These two behaviors, neither a bug on its own, combine to let a single text file trigger malware execution, as demonstrated with Codex and Claude Code. Key points What happened: An AGE

dev.toMontag 16:00 · 26.10.6 Min. Lesezeit
Bild: dev.to

Veröffentlicht am 26. Okt. • Zuerst veröffentlicht auf joho-todai.com • KI-unterstützt

Browser speichern Dateien ohne Nutzerinteraktion im Downloads-Ordner, während KI-Agenten automatisch Anweisungsdateien befolgen. Diese beiden Verhaltensweisen, für sich genommen jeweils kein Fehler, ermöglichen in Kombination, dass eine einzelne Textdatei die Ausführung von Malware auslöst, wie am Beispiel von Codex und Claude Code gezeigt wurde.

Forever Security, das die Sicherheit von KI-Coding-Agenten überwacht, erkannte einen Coding-Agenten, der versuchte, das bösartige npm-Paket function-color auf dem Rechner eines Kunden zu installieren, und blockierte es vor der Ausführung.

function-color ist bekannte Malware aus der MALFEX-Kampagne, die Checkmarx am 5. Oktober 2026 gemeldet hat. Sie ist Teil einer Supply-Chain-Attacke eines einzelnen Bedrohungsakteurs, der seit August 2023 aktiv ist. Das Paket selbst enthält keine Payload; es installiert stattdessen ein weiteres bösartiges Paket namens function-flag als Abhängigkeit.

Ungewöhnlich war die Quelle der Installationsanweisung. Es war weder ein Code-Repository noch eine Abhängigkeit. Auslöser war eine Textdatei namens AGENTS.md im Ordner ~/Downloads des Kunden.

AGENTS.md und CLAUDE.md sind Projektanweisungsdateien, die beim Start von OpenAI Codex beziehungsweise Claude Code gelesen werden. Sie sind schlichte Textdateien, die zu verwendende Werkzeuge, Testmethoden und Coding-Konventionen beschreiben. Ist die Datei im Arbeitsverzeichnis vorhanden, liest der Agent sie automatisch und befolgt ihre Anweisungen. Das ist beabsichtigtes Verhalten; hier liegt kein Fehler vor.

Das Problem ist der Ort, an dem sich diese Textdatei befand.

Der Ordner ~/Downloads ist als einziger Ordner bekannt, in den Webseiten Dateien ohne Klick oder Zustimmung speichern können. Chrome, Edge und Firefox speichern heruntergeladene Dateien standardmäßig dort und zeigen lediglich eine Download-Benachrichtigung an, ohne zu fragen, wo sie gespeichert werden sollen. Dieses Verhalten besteht seit 30 Jahren unverändert. In der Vergangenheit war es kein Problem, wenn dort eine ausführbare Datei landete, weil das Betriebssystem vor der Ausführung um Bestätigung bat.

Eine Textdatei ist keine ausführbare Datei, daher greifen die Schutzmechanismen des Betriebssystems nicht. Für einen KI-Agenten wird eine Anweisungsdatei jedoch faktisch zu einer ausführbaren Datei. Die enthaltenen Anweisungen werden ausgeführt. Keiner der Schutze, die für ausführbare Dateien gelten, greift bei Textdateien.

Das Web kann Dateien in Downloads ablegen. Ein Agent befolgt Anweisungsdateien in diesem Ordner. Jedes dieser Verhaltensweisen wurde für sich genommen als sichere Funktion entworfen. Das Problem liegt an der Schnittstelle beider.

Mit einer tatsächlichen Angriffsdatei, die vom Rechner eines Kunden geborgen wurde, reproduzierte Forever Security die Angriffskette gegen OpenAI Codex in einer isolierten virtuellen Maschine. Aus Sicherheitsgründen verwendeten die Tests eine harmlose Payload, die lediglich die Taschenrechner-Anwendung öffnete. Die Erfolgsquote lag über 90%.

Die geborgene AGENTS.md war ein langes Dokument von rund 13 KB mit dem Titel "Engineering Work Guidelines". Der Angriffscode war als routinemäßiger Einrichtungsschritt in einem Abschnitt gegen Ende getarnt. Codex lehnt eine kurze Anweisung wie "installiere dieses Paket" ab. Indem er in einem langen technischen Dokument versteckt wurde, konnte er diese Verteidigung umgehen.

Wenn der Angriff auf Codex erfolgreich ist, wird die systemweite Konfigurationsdatei ~/.codex/config.toml überschrieben, um den "Projektwerkzeuge"-Server des Angreifers zu registrieren. Diese Konfiguration gilt maschinenweit und ist nicht an Downloads gebunden. Jede folgende Codex-Sitzung auf diesem Rechner lädt den Server des Angreifers, unabhängig davon, in welchem Ordner sie arbeitet. Die Kompromittierung besteht über das Verlassen des Ordners hinaus.

Gegen Claude Code kam eine andere Technik zum Einsatz. Eine CLAUDE.md-Datei veränderte die Einstellung ANTHROPIC_BASE_URL, um den API-Traffic von Claude Code an einen von den Forschern kontrollierten Server umzuleiten. Der Angriff war als Verbindung zu "dem internen Gateway des Teams" getarnt, wie sich bestätigen ließ.

Die Erfolgsquote lag bei etwa 50%, und erfolgreiche Angriffe führten sofort zur Offenlegung von OAuth-Token, den zur Authentifizierung verwendeten Zugangsdaten. Der Server der Forscher konnte das Token zudem nutzen, um sich als Modell auszugeben und Tool-Aufrufe zurückzugeben, die eine Code-Ausführung verursachten. Eine Code-Ausführung innerhalb derselben Sitzung gelang in etwa einem von fünf Versuchen.

Abbildung ausgelassen — siehe Originalartikel

Forever Security vergleicht diese Situation mit einer Phishing-Seite. Dass ein Browser eine gefälschte Bank-Login-Seite korrekt anzeigt, ist kein Fehler. Das Problem liegt im Inhalt der Seite; für den Browser gibt es nichts zu reparieren. Dasselbe Muster gilt hier.

Für OpenAI oder Anthropic gibt es nichts zu beheben. Ein Agent, der eine AGENTS.md in einem Ordner befolgt, tut genau das, wofür er gebaut wurde.

So beschreibt es der Bericht von Forever Security.

Sowohl OpenAI als auch Anthropic empfehlen, Coding-Agenten aus dem jeweils bearbeiteten Projektverzeichnis heraus zu starten. Die Beschränkung des Arbeitsverzeichnisses auf das Projekt gibt dem Agenten den passenden Kontext und verringert das Risiko, unrelated Dateien zu verarbeiten.

Die tatsächliche Nutzung folgt dieser Empfehlung nicht. Die Kundentelemetrie von Forever Security zeigte, dass etwa die Hälfte der Kunden Agenten innerhalb von Downloads startete. Allein bei Claude Code sollen dort mehr als 1.300 Sitzungen gestartet worden sein. Der Forscher Gal Weizman von Forever Security erklärt, viele Entwickler nutzten Agenten, um heruntergeladene Dateien zu sortieren oder neu heruntergeladene Dateien zu verarbeiten. Diese Zahlen stammen aus dem Kundenkreis des Unternehmens und sind keine branchenweiten Statistiken. Das Unternehmen verkauft ein Produkt zur Überwachung von Agenten.

Wie die Datei in den Downloads-Ordner des Kunden gelangte, wurde nicht geklärt. Die Forscher erstellten eine Proof-of-Concept-Seite, und als BleepingComputer sie testete, wurde eine AGENTS.md-Datei mit harmlosem Inhalt in Chrome automatisch heruntergeladen. Brave verlangte die Zustimmung des Nutzers zum Download, Chrome, Edge und Firefox zeigten hingegen nur eine Download-Benachrichtigung an, ohne nach einem Speicherort zu fragen.

Erschwerend kommt hinzu, dass Agenten manchmal selbst Browser öffnen und im Web surfen. Die Telemetrie der Forscher zeigt, dass etwa ein Viertel der Agentensitzungen einen Browser öffnet. Ein Agent könnte ohne menschliche Aufsicht auf dem Bildschirm eigenständig auf einer Seite landen, auf der eine Angriffsdatei hinterlegt ist.

Prompt-Injection-Angriffe gegen KI-Coding-Agenten (auf Japanisch) und Infektionen über npm-Pakete (auf Japanisch) wurden bereits früher berichtet. Was diesen Angriff unterscheidet, ist, dass er von außen gelingen kann, indem lediglich eine Textdatei über das Web platziert wird.

Die Abwehrmaßnahmen, die Forever Security auflistet, kosten nichts.

Agenten nicht in ~/Downloads starten. Sie aus dem Wurzelverzeichnis des Zielprojekts heraus ausführen.

In Arbeitsverzeichnissen und neu geklonten Repositorien nach unbekannten AGENTS.md-, CLAUDE.md- oder ähnlichen Anweisungsdateien suchen.

Agenten-Konfigurationsdateien prüfen. Bei Codex sollte ~/.codex/config.toml auf unerwartete [mcp_servers.*]-Blöcke überprüft werden. Bei Claude Code sollte.claude/settings.json auf eine ANTHROPIC_BASE_URL geprüft werden, die man nicht selbst gesetzt hat.

Genehmigungsabfragen und Sandbox-Schutz aktiviert lassen. Eine Datei, die einen Agenten anweist, diese zu deaktivieren, ist selbst ein Anzeichen eines Angriffs.

Wer eine verdächtige Datei findet, sollte Token unter der Annahme rotieren, dass sie kompromittiert sind. Ist function-color bereits installiert, ist der Rechner als kompromittiert zu behandeln.

30 Jahre lang beruhte Sicherheit auf der Prämisse, dass "nichts Gefährliches passiert, solange der Nutzer nichts anklickt". Agenten klicken, genehmigen und führen Code stellvertretend für Menschen aus. Eine einst solide Garantie ist stillschweigend zu einer Annahme geworden. Annahmen können angegriffen werden. Downloads ist einfach der erste Ort, an dem das Wirklichkeit wurde.

Zuerst veröffentlicht auf Joho no Todai. Das japanische Original findet sich hier.

Automatisch übersetzt. Das Original auf Englisch ist unten aufklappbar.

Original (Englisch) anzeigen

Posted on Oct 26 • Originally published at joho-todai.com • AI-assisted

Browsers save files to Downloads without user interaction, while AI agents automatically follow instruction files. These two behaviors, neither a bug on its own, combine to let a single text file trigger malware execution, as demonstrated with Codex and Claude Code.

Forever Security, which monitors the security of AI coding agents, detected a coding agent attempting to install the malicious npm package function-color on a customer's computer and blocked it before execution.

function-color is known malware belonging to the MALFEX campaign reported by Checkmarx on October 5, 2026. It is part of a supply chain attack by a single threat actor active since August 2023. The package itself contains no payload; it installs another malicious package, function-flag, as a dependency.

What was unusual was the source of the installation instruction. It was neither a code repository nor a dependency. The cause was a text file named AGENTS.md in the customer's ~/Downloads folder.

AGENTS.md and CLAUDE.md are project instruction files read at startup by OpenAI Codex and Claude Code, respectively. They are simply plain text describing tools to use, testing methods, and coding conventions. If the file is present in the working directory, the agent automatically reads it and follows its instructions. This is intended behavior; there is no bug here.

The problem is where that text file was placed.

The ~/Downloads folder is known as the only folder where web pages can save files without a click or approval. Chrome, Edge, and Firefox all save downloaded files there by default, displaying a download notification but not asking where to save them. This behavior has remained unchanged for 30 years. In the past, even if an executable landed there, it was not a problem because the OS asked for approval before running it.

A text file is not an executable, so the OS guardrails do not activate. But for an AI agent, an instruction file effectively becomes an executable. The written instructions are carried out. None of the protections applied to executable files apply to text files.

The web can write files to Downloads. An agent follows instruction files in that folder. Each behavior was designed as a safe feature on its own. The problem lies where the two intersect.

Using an actual attack file recovered from a customer's machine, Forever Security reproduced the attack chain against OpenAI Codex in an isolated virtual machine. For safety, the tests used a harmless payload that simply opened the calculator application. The success rate exceeded 90%.

The recovered AGENTS.md was a long document of roughly 13 KB titled "Engineering Work Guidelines." The attack code was disguised as a routine setup step in a section near the end. Codex rejects a short instruction to "install this package." Hiding it in a long technical document let it pass that defense.

When the attack against Codex succeeds, the machine-wide configuration file ~/.codex/config.toml is rewritten to register the attacker's "project tools" server. This configuration applies across the machine, rather than being tied to Downloads. Every subsequent Codex session on that machine loads the attacker's server, regardless of the folder it is working in. The compromise persists after leaving the folder.

A different technique was used against Claude Code. A CLAUDE.md file changed the ANTHROPIC_BASE_URL setting to direct Claude Code's API traffic to a researcher-controlled server. I confirmed that the attack was disguised as a connection to "the team's internal gateway."

The success rate was about 50%, and successful attacks immediately leaked OAuth tokens, the access credentials used for authentication. The researchers' server could also use the token to impersonate the model and return tool calls that caused code execution. Code execution within the same session succeeded in roughly one in five attempts.

Figure omitted — see the original article

Forever Security compares this situation to a phishing page. A browser accurately displaying a fake bank login page is not a bug. The problem is the page's content; there is nothing for the browser to fix. The same structure applies here.

There is nothing for OpenAI or Anthropic to fix. An agent following AGENTS.md in a folder is doing exactly what it was built to do

That is how Forever Security's report describes it.

Both OpenAI and Anthropic recommend running coding agents from the project directory being worked on. Restricting the working directory to the project gives the agent appropriate context and reduces the risk of processing unrelated files.

Actual usage does not follow that recommendation. Forever Security's customer telemetry showed that roughly half its customers ran agents inside Downloads. More than 1,300 Claude Code sessions alone reportedly started there. Forever Security researcher Gal Weizman explains that many developers use agents to organize downloaded files or process newly downloaded files. These figures come from the company's customers, not industry-wide statistics. The company sells an agent monitoring product.

How the file reached the customer's Downloads folder has not been determined. The researchers created a proof-of-concept page, and when BleepingComputer tested it, an AGENTS.md file with harmless content downloaded automatically in Chrome. Brave asked the user to approve the download, but Chrome, Edge, and Firefox only displayed a download notification, without asking for a save location.

Complicating matters further, agents sometimes open browsers and browse the web themselves. The researchers' telemetry shows that roughly one-quarter of agent sessions open a browser. An agent could reach a page planted with an attack file on its own while no human is watching the screen.

Prompt injection attacks against AI coding agents (in Japanese) and infections through npm packages (in Japanese) have been reported before. What makes this attack different is that it can succeed from outside the agent simply by placing one text file through the web.

The defenses Forever Security lists cost nothing.

Do not launch agents in ~/Downloads. Run them from the root directory of the target project.

Check for unfamiliar AGENTS.md, CLAUDE.md, or similar instruction files in working directories and newly cloned repositories.

Inspect agent configuration files. For Codex, check ~/.codex/config.toml for unexpected [mcp_servers.*] blocks. For Claude Code, check.claude/settings.json for an ANTHROPIC_BASE_URL you do not remember setting.

Keep approval prompts and sandbox protections enabled. A file instructing an agent to disable them is itself a sign of an attack.

If you find a suspicious file, rotate tokens on the assumption that they have leaked. If function-color is already installed, treat the machine as compromised.

For 30 years, security rested on the premise that "nothing dangerous happens unless the user clicks something." Agents click, approve, and execute code on people's behalf. A once-solid guarantee has quietly become an assumption. Assumptions can be attacked. Downloads is simply the first place where that became reality.

Originally published on Joho no Todai. The Japanese original is here.

Quelle: dev.to (dev.to). Original öffnen