Der Fehlerbericht führte den Befehl aus
Agentjacking, im Juni 2026 von Tenet Security offengelegt, braucht weder Schadsoftware noch Zugriff auf Ihre Infrastruktur. Ein Angreifer legt mit einem öffentlichen, nur zum Schreiben bestimmten Schlüssel einen gefälschten Fehler in Ihrem Sentry-Projekt an, versteckt darin Anweisungen und wartet. Wenn Sie Ihren Coding-Agenten bitten, das Problem zu beheben, liest er den Text des Angreifers als Anleitung und führt ihn mit Ihren Anmeldedaten aus. Tenet fand mindestens 2.388 offengelegte Projekte und eine Erfolgsquote von 85 % bei Claude Code, Cursor und Codex. Bromure Agentic Coding führt diesen gesamten Lese-und-Ausführen-Pfad in einer wegwerfbaren Linux-VM aus, bewertet den abgerufenen Text, bevor der Agent handelt, und lässt dem Anmeldedaten-Dieb nur Attrappen.
Sie haben Ihren Coding-Agenten gebeten, einen Fehler zu beheben. Er öffnete den Issue-Tracker, las das oberste Ergebnis und tat, was dort stand. Das Problem ist, dass jeder im Internet diesen Fehler hätte schreiben können — und der, den Ihr Agent las, war geschrieben, um befolgt zu werden. Keine Schadsoftware landete. Kein Server wurde durchbrochen. Ein Fehlerbericht führte einen Befehl auf Ihrer Maschine aus.
Am 12. Juni 2026 veröffentlichten die Forscher von Tenet Security — Ron Bobrov, Barak Sternberg und Nevo Poran — einen Angriff, den sie Agentjacking nennen, über die AI Safety Initiative der Cloud Security Alliance. Er nutzt weder eine Phishing-E-Mail noch ein vergiftetes Paket noch ein gestohlenes Passwort. Er nutzt einen Fehlerbericht. Genauer gesagt nutzt er die Tatsache, dass ein Coding-Agent, den man bittet, „die offenen Sentry-Issues zu beheben“, einen Fehlerbericht liest und dessen Inhalt als Anweisungen behandelt.
Der Aufbau beginnt mit etwas, das die meisten Web-Apps absichtlich herausgeben. Ein Sentry-DSN — der Schlüssel, mit dem eine Website ihre eigenen Abstürze an Sentry meldet, die Plattform zur Fehlerverfolgung — ist ein öffentliches, nur zum Schreiben bestimmtes Zugangsdatum. Es steckt im clientseitigen JavaScript der Seite, und Sentrys Ingest-Endpunkt akzeptiert absichtlich nicht authentifizierte POST-Anfragen an es. So meldet Ihr Browser-Tab einen Absturz, ohne sich anzumelden. Es bedeutet auch, dass jeder, der Ihren Seitenquelltext liest, Ereignisse an Ihr Sentry-Projekt senden kann. Tenet suchte danach und fand 71 injizierbare DSNs unter den Top-Millionen-Websites und mindestens 2.388 Organisationen mit offengelegten DSNs im gesamten Internet.
Wie ein Absturzbericht zu einem Befehl wird
Der Angreifer nimmt einen gefundenen DSN und schickt per POST ein gefälschtes Fehlerereignis an ihn. Das Ereignis sieht aus wie ein gewöhnlicher Absturz, nur dass das Nachrichtenfeld und die Kontextschlüssel in Markdown verfasst sind — Überschriften, Codeblöcke, ein Abschnitt, der sich wie eine „Lösung“ liest — so formatiert, dass sie von Sentrys eigenen Diagnosevorlagen visuell und syntaktisch nicht zu unterscheiden sind. Es liegt in der Issue-Liste des Projekts wie jeder andere ungelöste Fehler.
Dann wartet der Angreifer auf Sie. Wenn ein Entwickler seinen Coding-Agenten bittet, ungelöste Sentry-Issues zu untersuchen, fragt der Agent Sentry ab — meist über den MCP-Server von Sentry, den Standard-Konnektor, der einem Agenten erlaubt, Daten aus einem externen Werkzeug abzurufen — und bekommt das Ereignis zurück. Wie Tenet es formulierte, „empfängt der Agent die Antwort und handelt danach, genau wie es ein Entwickler täte“. Die Antwort trägt kein Signal, dass ihr Inhalt von einem Angreifer statt von der Laufzeit der Anwendung selbst verfasst wurde. Die „Lösung“ sagt, man solle einen Befehl ausführen. Der Agent führt ihn aus, mit den eigenen Rechten des Entwicklers, auf der eigenen Maschine des Entwicklers.
Tenet meldete eine Erfolgsquote von 85 % über die getesteten Agenten hinweg — Claude Code, Cursor und Codex, die Werkzeuge, zu denen die meisten Entwickler greifen. Ihr Proof-of-Concept-Befehl zog davon mit Umgebungsvariablen, AWS-Anmeldedaten, GitHub- und GitLab-OAuth-Tokens, npm-Registry-Tokens, Docker-Konfiguration, Kubernetes-Cluster-Tokens und CI/CD-Pipeline-Geheimnissen. Sentry, am 3. Juni über die Schwachstelle informiert, weigerte sich, das zugrunde liegende Verhalten zu beheben — es sei, in ihren Worten, technisch nicht zu verteidigen — und fügte einen globalen Inhaltsfilter hinzu, der eine bestimmte Payload-Zeichenkette blockiert.
Warum jede bestehende Verteidigung direkt daran vorbeilief
Agentjacking ist nicht wegen der Raffinesse der Payload von Bedeutung, sondern weil in einem normalen Sicherheits-Stack nichts auslöst. Es gibt keine Schadsoftware auf der Festplatte, die ein Endpunkt-Agent abfangen könnte. Es gibt keine ungewöhnliche Anmeldung, die die Identitätsüberwachung melden könnte. Es gibt keine ausgehende Verbindung von einem Prozess, der keinen Grund dazu hat — der Agent soll mit Sentry sprechen, und die Anmeldedaten des Entwicklers sollen funktionieren. Jeder Schritt in der Kette ist eine erlaubte Aktion, ausgeführt mit legitimem Zugriff. Wie Tenet es formulierte, verletzt der Angriff keine Richtlinie und überschreitet keine Anomalie-Schwelle.
Das ist dieselbe Wand, gegen die der Rest der agentischen Sicherheit immer wieder läuft. Eine Befehls-Sperrliste verliert gegen die Shell, die den Befehl umschreibt. Ein Arbeitsbereich, dem Sie vertrauten, verliert gegen die Server, die er still startet. Eine Sicherheitsprüfung, die der Agent für Sie durchführt, wird zu dem, was Sie angreift. Agentjacking ist die Version, bei der die vergiftete Eingabe über ein Werkzeug ankommt, dem Sie zu Recht vertrauten, und Daten trägt, die Sie aus gutem Grund gelesen haben. Der MCP-Server von Sentry hat seine Arbeit perfekt gemacht. Das Problem ist, dass „hole den Fehler und handle danach“ und „hole die Anweisungen des Angreifers und handle danach“ für den Agenten derselbe Satz sind.
Tenets eigene Empfehlungen weisen auf die Form der Lösung hin: den Agenten in einer Sandbox mit eingeschränktem Netzwerkausgang ausführen, alles, was ein MCP-Server zurückgibt, als potenziell feindliche Eingabe behandeln und aufhören, eine abgerufene Zeichenkette ohne Grenze dazwischen zu einem Befehl werden zu lassen. Das beschreibt eine Architektur, keinen Patch.
Wo Bromure die Grenze zieht
Bromure Agentic Coding versucht nicht, dem Agenten beizubringen, welchen Fehlerberichten er glauben soll. Es ändert, was ein geglaubter erreichen kann. Jeder Agent, den Bromure ausführt — Claude Code, Codex, Grok Build — läuft in einer wegwerfbaren Linux-VM auf Ihrem Mac, nicht auf macOS selbst. Wenn der Agent also das vergiftete Sentry-Ereignis zieht und genau das tut, was Tenet diese Agenten tun sah, sind mehrere Dinge bereits wahr.
Erstens, der abgerufene Text wird von einem Detektor gelesen, bevor er zu
einem Plan wird. Agentjacking ist ein Leseangriff, bevor es ein
Ausführungsangriff ist: Der ganze Exploit hängt davon ab, dass der Agent die
„Lösung“ des Angreifers aufnimmt und als Anleitung behandelt. Das ist genau
die nicht vertrauenswürdige Autorität, die Bromure überwacht — dieselbe Klasse
wie eine bösartige CLAUDE.md oder eine vergiftete AGENTS.md. Bromures
Prompt-Injection-Erkennung auf dem Gerät bewertet den Inhalt, den der Agent
liest, gegen lokale Modelle, die den Mac nie verlassen, plus einen
deterministischen Scanner für unsichtbare Unicode-Tricks. Ein Absturzbericht,
dessen „Behebung“ ein Shell-Befehl ist, der Ihre Tokens liest, ist genau der
Fall, für dessen Meldung dieser Detektor existiert.
Zweitens, der Befehl läuft in einer Box, die Sie wegwerfen. Angenommen, der Köder ist gut genug formuliert, um am Bewerter vorbeizukommen, und der Befehl läuft. Er läuft in der VM. Der „persistente Hintertürzugang“ in Tenets Bedrohungsmodell hat nichts, worauf er bestehen bleiben könnte: Setzen Sie das Profil auf die Basis zurück, und das abgelegte Skript, der hinzugefügte SSH-Schlüssel, der geplante Job — alles ist weg. Nichts, was der Befehl tat, überlebt das Schließen des Fensters.
Drittens, es gibt keine echten Anmeldedaten zu stehlen. Die gesamte
Beuteliste aus dem Proof-of-Concept — AWS-Schlüssel, GitHub- und
GitLab-Tokens, npm- und Docker-Anmeldedaten, Kubernetes- und CI/CD-Geheimnisse,
Umgebungsvariablen — ist genau das, was Bromure von vornherein aus der Box
heraushält. Bromure injiziert Platzhalterwerte (brm_…, eine synthetische
~/.kube/config, wegwerfbare Cloud- und Registry-Tokens) in die VM und tauscht
die echten nur auf dem Host zurück, im Proxy, auf dem Weg hinaus zur echten
API. Der Befehl durchsucht Umgebung und Festplatte und findet Attrappen. Was
auch immer er an den Server des Angreifers schickt, ist ein Sack Zeichenketten,
die sich nirgends authentifizieren.
Viertens, die Exfiltration ist sichtbar. Tenets Angriff endet damit, dass die gestohlenen Tokens die Maschine verlassen. Bromure leitet den Verkehr der VM durch einen Host-Proxy, sodass die Verbindung zum Server des Angreifers im Sicherheitsprotokoll als ausgehender Verkehr erscheint, den Sie sehen können — kein stiller Rückruf von einem Laptop, den Sie für sauber hielten. Der „eingeschränkte Netzwerkausgang“, den Tenet empfiehlt, ist der Ort, an dem der Agent bereits lebt.
Worum dies eine Grenze zieht
Isolierung und Bewertung sind Eindämmung, keine Heilung für einen vertrauensseligen Agenten. Es lohnt sich, genau zu sein, was Bromure hier ändert und was nicht.
Der Bericht kommt trotzdem an
Bromure repariert Sentrys DSN-Design nicht und hindert einen Angreifer nicht daran, einen vergifteten Absturz anzulegen — dieser öffentliche Nur-Schreib-Schlüssel ist die Grenze, die Sentry ziehen müsste, und sie haben es abgelehnt. Was Bromure ändert, ist, was passiert, nachdem der Agent den Bericht gelesen hat: wo der Befehl läuft und was er erreichen kann.
Erkennung ist ein Netz, keine Wand
Die Injektionsbewertung auf dem Gerät meldet eine „dies zur Behebung ausführen“-Lösung öfter als nicht, aber ein sorgfältiger Autor kann einen Köder so formulieren, dass er an einem einzelnen Scanner vorbeikommt. Behandeln Sie den Detektor als eine Schicht; die Eindämmung — eine wegwerfbare Box mit unechten Schlüsseln und protokolliertem Ausgang — ist das, was hält, wenn ein Detektor versagt.
Ersetzung deckt die Geheimnisse ab, die Sie konfigurieren
Der Attrappen-Tausch schützt Anmeldedaten, die Sie in ein Profil legen: Modellschlüssel, Git- und Cloud-Tokens, Registry- und Cluster-Tokens, SSH-Schlüssel. Ein Token, das ein Skript während des Laufs auf die Festplatte schreibt, oder eine Sitzung, die Sie von Hand in der Box aufbauen, ist nur Daten. Halten Sie Geheimnisse im Broker, nicht im Arbeitsbereich.
Isolierung ist kein Grund, alles automatisch auszuführen
Eine wegwerfbare VM verkleinert den Explosionsradius; sie macht die Prüfung nicht überflüssig. Für Aktionen, die über die Box hinausreichen — einen Pull Request öffnen, zu einem Remote pushen — verdient der Bestätigungsschritt weiterhin seinen Platz. Eindämmung senkt den Einsatz eines Fehlers; sie löscht ihn nicht.
Tenets Erkenntnis ist nicht, dass eine Plattform einen Fehler hat. Es ist, dass der Vertrauensmechanismus darunter — ein Agent, der eine abgerufene Zeichenkette als Tatsache und eine „Lösung“ als Plan behandelt — von jedem Werkzeug geteilt wird, das einen Agenten mit der Außenwelt verbindet, und er wird in diesem Quartal nicht gepatcht. Sentry ist der Bote; der nächste wird ein Jira-Ticket sein, ein Linear-Kommentar, ein von einem Fremden hinterlassenes Code-Review. Ihr Agent wird etwas lesen, das ein Angreifer geschrieben hat, und bei einer Erfolgsquote von 85 % wird er manchmal tun, was dort steht. Die Frage ist nicht, ob er jemals getäuscht wird. Die Frage ist, was läuft, wenn es passiert: Ihre Maschine, Ihre echten Tokens und ein Standbein, das bleibt — oder eine Linux-Box, die Sie wegwerfen können, mit Attrappen darin und dem Ausgang im Protokoll. Bromure macht es zum Zweiten.