Abstrakte technische Illustration auf dunkelblauem Grund: Nahe dem linken Rand steht eine hohe, halbtransparente Grenzfläche, gezeichnet als dünne blasse Kontur mit mattierter Füllung. Eine einzelne weiße Linie tritt von links ein, durchquert die Ebene und setzt sich nach rechts fort, wo sie an einem kleinen dunklen Block endet, der außerhalb einer flachen Reihe aus vier leuchtenden cyanfarbenen Modulen liegt. Eine dünne gestrichelte weiße Spur zweigt kurz vor der Ebene von der Linie ab und endet an einem kleinen blassen Rechteck, das auf der Vorderseite der Ebene sitzt und allein durch seine Form gekennzeichnet ist. Es erscheinen keine Texte, Personen oder Organisationslogos. Das OrcaRouter-Logo ist in der unteren rechten Ecke eingefügt.
AI Safety Incidents

GhostApproval: Sechs KI-Coding-Assistenten baten um Erlaubnis und nannten die falsche Datei

Autor

Gideon Frost

Veröffentlicht am

Neueste Modelle · 20Alle Modelle ansehen →
Benchmarks: Artificial Analysis · täglich aktualisiert
Zurück zu allen Beiträgen

Am 8. Juli 2026 veröffentlichte das Sicherheitsunternehmen Wiz GhostApproval, einen Forschungsbefund, bei dem ein in einem Repository platzierter symbolischer Link sechs KI-Coding-Assistenten dazu brachte, außerhalb ihres Arbeitsbereichs zu schreiben – in ~/.ssh/authorized_keys, wodurch dauerhafter passwortloser SSH-Zugang gewährt wird, oder in ~/.zshrc, das beim nächsten Shell-Start ausgeführt wird – während der Bestätigungsdialog nur die harmlose Datei nannte, als die der Link sich ausgab. Wiz testete Amazon Q Developer, Anthropics Claude Code, Augment, Cursor, Google Antigravity und Windsurf und meldete das Muster bei allen sechs. Es wurde keine Ausnutzung in freier Wildbahn gemeldet: Die Arbeit ist eine Proof-of-Concept-Demonstration, und der Archiveintrag verzeichnet keinen realen Schaden. Drei Anbieter lieferten Fehlerbehebungen, zwei bestätigten den Bericht und antworteten dann nicht mehr, und einer bestritt, dass das Verhalten überhaupt eine Schwachstelle sei. Das Orca AI Incident Archive enthält den vollständigen Datensatz zu diesem Befund zusammen mit den anderen Einträgen, die unter seinem SANDBOX-Typ-Tag abgelegt sind.

Das Primitiv selbst ist nichts Neues. Die Symlink-Verfolgung, katalogisiert als CWE-61, ist seit Jahrzehnten ein Angriffsprimitiv – Wiz nennt frühere Verwendungen in Race Conditions, Paketmanagern und Container-Escapes – und alle diese hingen davon ab, dass ein Tool in einen benutzergesteuerten Pfad schrieb, ohne ihn zuvor aufzulösen. Was diesen Fund einen Namen wert machte, ist die zweite Ebene: In mehreren Produkten identifizierte die eigene Logik des Assistenten das gefährliche Ziel, und der dem Menschen angezeigte Prompt verbarg es. Wiz führt das als CWE-451, Fehldarstellung kritischer Informationen in der Benutzeroberfläche. Die Sicherheitsgrenze war vorhanden. Die Information, die eine Person brauchte, um sie zu nutzen, war es nicht.

Wie der Trick funktioniert und worauf er landet

Wizs bösartiges Repository ist absichtlich langweilig. Es enthält einen Symlink namens project_settings.json, der auf die SSH-Authorized-Keys-Datei des Entwicklers verweist, sowie eine README, die den Agenten anweist, diese „config“ beim Einrichten des Arbeitsbereichs zu aktualisieren. Wenn der Entwickler den Assistenten bittet, der README zu folgen, folgt der Agent dem Link und schreibt den öffentlichen Schlüssel des Angreifers. Läuft auf dem Rechner ein SSH-Dienst, den der Angreifer erreichen kann, ist das von da an passwortloser Login. Eine zweite Variante lässt denselben Köder auf ~/.zshrc zeigen, sodass die Payload beim nächsten Öffnen eines Terminals ausgeführt wird und überhaupt kein SSH-Zugriff nötig ist.

Wiz’ Beschreibung des technischen Fehlers ist kurz: Die Sandbox, sofern vorhanden, validiert den kanonischen Pfad nicht, sodass ein Schreibvorgang, der auf das Projektinnere abzielt, dort landet, wohin der Link zeigt. Der Proof of Concept des Unternehmens reproduzierte dies nach eigenen Angaben bei „6 der führenden KI-Coding-Assistenten“ und veröffentlichte für jeden Screenshots. Betroffen sind alle, die ein Repository, das sie nicht selbst verfasst haben, in einem dieser Tools öffnen – was im normalen Entwickler-Workflow geforkte Projekte, Abhängigkeiten von Drittanbietern und jede Code-Review des Branches eines externen Beitragenden einschließt.

Der Dialog, der die falsche Datei benannt hat

Der klarste Beleg stammte von Claude Code. In Wiz’ Test hieß es in der Begründung des Agenten – so das Zitat des Unternehmens –: „Ich kann sehen, dass project_settings.json tatsächlich eine zsh-Konfigurationsdatei ist.“ Die Berechtigungsabfrage, die der Nutzer sah, lautete: „Diese Änderung an project_settings.json vornehmen?“ Der Agent wusste, wohin geschrieben werden sollte; die Person, die die Genehmigung erteilte, wusste es nicht. Wiz bezeichnet die daraus resultierende Zustimmung als „inhaltlich leer“ und die Human-in-the-Loop-Prüfung als bloßen Gummistempel.

Drei Produkte machten die Diskrepanz schlimmer als eine schlechte Beschriftung. Windsurf schrieb die Datei auf die Festplatte bevor die Schaltflächen „Accept“ und „Reject“ erschienen, sodass der Dialog ein Angebot zum Rückgängigmachen statt einer Autorisierungsschranke war – laut Wiz war der Schlüssel bereits vorhanden, als der Nutzer ablehnen konnte. Amazon Q Developer zeigte dieselbe Reihenfolge und bot nach dem Schreiben nur eine Schaltfläche „Undo“ an. Augment fragte überhaupt nichts ab: Wiz demonstrierte einen Lesezugriff über einen symbolischen Link, der im Chat-Transkript eine als Köder dienende AWS-Anmeldeinformationsdatei von außerhalb des Projekts zum Vorschein brachte, sowie einen Schreibzugriff über einen symbolischen Link auf ~/.ssh/authorized_keys ohne jeglichen Dialog. Am anderen Ende zeigten Cursor und Google Antigravity den nicht aufgelösten Pfad an und verlangten einen Klick, der den aufgelösten Pfad autorisierte.

Wiz' erster Test lief am 10. Februar 2026 und die Berichte ergingen zwischen dem 12. Februar und dem 5. März. Seine Zeitleiste zur Offenlegung verzeichnet die Bestätigungen: Anthropic am 15. Februar, Augment am 24. Februar, Google am 26. Februar, Cursor am 2. März, AWS am 6. März und Cognition, dem Windsurf gehört, am 23. Juni. Die öffentliche Bekanntgabe erfolgte rund fünf Monate nach dem ersten Bericht.

HTML card headed 'Five months from first test to public disclosure', with a kicker reading 'GhostApproval · Wiz Research · disclosure sequence'. A vertical timeline lists the dated steps: 10 February 2026, initial discovery; 12 and 14 February, Augment read and write reports; 14 February, report to Anthropic; 15 February, Anthropic closes the ticket as Informative; 24 February, Augment acknowledges; 26 February, Google acknowledges; 2 March, Cursor acknowledges; 2 and 5 March, reports to Cognition and AWS; 22 May, Google deploys its fix; 27 May, AWS ships language server 1.69.0; 23 June, AWS publishes CVE-2026-12958 and Cognition acknowledges; 8 July 2026, public disclosure. An amber box records that Augment and Windsurf acknowledged receipt and supplied no further updates. A footer cites Wiz's disclosure timeline. The OrcaRouter logo is composited in the bottom-right corner.

Sechs Anbieter, drei Antworten

Wiz bewertet die Ergebnisse nach seiner eigenen Schweregradskala, von „High" bei AWS bis „Critical" bei Augment, Cursor, Google Antigravity und Windsurf. Drei Anbieter behandelten den Bericht als Schwachstelle und lieferten einen Fix aus. Das Archiv stuft den Eintrag als hohe Schwere und mit A bei der Konfidenz ein, und die primären Advisories stimmen mit Wiz hinsichtlich des Mechanismus überein.

• Amazon Web Services. Hoher Schweregrad, erfasst als CVE-2026-12958 und behoben in Language Servers for AWS 1.69.0. AWS’ eigenes Bulletin 2026-047-AWS, veröffentlicht am 23. Juni 2026, bestätigt „ein Problem mit fehlender Symlink-Validierung“ vor 1.69.0 und listet die minimalen Plugin-Builds auf, die den Fix enthalten: Amazon Q Developer for Visual Studio Code 2.20, for JetBrains 4.3, for Eclipse 2.7.4 und AWS Toolkit with Amazon Q for Visual Studio 1.94.0.0. Es wird angegeben, dass es keine Workarounds gibt, dass der Language Server automatisch aktualisiert wird, sofern keine Netzwerkkonfiguration dies verhindert, und Wiz für die koordinierte Offenlegung gedankt wird. Der CNA-Eintrag bewertet das Problem mit 8,5 nach CVSS 4.0 und 7,8 nach CVSS 3.1.

• Cursor. Kritisch, erfasst als CVE-2026-50549 und behoben in Cursor 3.0. Der Eintrag wurde von GitHub als CNA am 25. Juni 2026 mit 9,3 unter CVSS 4.0 veröffentlicht. Seine Beschreibung stellt den Angreifer etwas anders dar als die Repository-Geschichte von Wiz: Ein bösartiger Agent erstellt einen Symlink im Workspace und erzwingt, dass die Pfad-Kanonisierung fehlschlägt – entweder weil das Ziel nicht existiert oder weil die Leseberechtigung vom Pfad entfernt wurde –, woraufhin der Schreibvorgang ohne Genehmigung auf den ursprünglichen Pfad zurückfällt und den Sandbox-Helfer für eine Ausführung außerhalb der Sandbox überschreiben kann.

• Google. Wiz bewertet Antigravity als kritisch und führt die Korrektur als Version 1.19.6 auf, bereitgestellt am 22. Mai 2026. In der Spalte für den Schweregrad steht „Pending“, und Google prüfte nach Wiz’ Darstellung, ob ein CVE ausgestellt werden sollte; im öffentlichen Verzeichnis erscheint keine CVE-Kennung für Antigravity.

• Augment. Kritisch laut Wiz-Bewertung, getestet mit 0.754.3, bestätigt am 24. Februar 2026 und zum Zeitpunkt der Veröffentlichung ungepatcht. Die Forschungsnotiz der Cloud Security Alliance zu dem Befund hält Augments Gegenargument fest, dass ein Agent unter den eigenen Zugangsdaten des Nutzers arbeitet.

• Windsurf. Kritisch nach Wiz' Bewertung, getestet mit Build V1.9566, von Cognition am 23. Juni 2026 bestätigt und bei Veröffentlichung ungepatcht.

• Anthropic. Umstritten. Keine CVE, und die getestete Version von Claude Code, 2.1.42, steht in Wiz' Tabelle mit dem Status „Rejected“.

HTML card headed 'One pattern, six products, six answers', with a kicker reading 'GhostApproval · vendor status at public disclosure, 8 July 2026'. A six-row table gives product, Wiz's severity rating, CVE identifier, fixed version and status: Amazon Q Developer, High, CVE-2026-12958, fixed in language server 1.69.0; Cursor, Critical, CVE-2026-50549, fixed in 3.0; Google Antigravity, Critical, no CVE published, fixed in 1.19.6 on 22 May 2026; Augment, Critical, no CVE, no fix, acknowledged 24 February 2026; Windsurf, Critical, no CVE, no fix, acknowledged 23 June 2026; Claude Code from Anthropic, Disputed, no CVE, rejected as outside the threat model. A note beneath reads that severity ratings for the products without a CVE are Wiz's own, not a CNA score, and that no exploitation in the wild was reported. A footer cites Wiz's vendor table, the AWS security bulletin and the two CVE records. The OrcaRouter logo is composited in the bottom-right corner.

Anthropics Ablehnung und die Lösung, die bereits vor dem Bericht existierte

Anthropics Antwort an Wiz war eine wohlüberlegte Absage. „Dies liegt außerhalb unseres aktuellen Bedrohungsmodells“, schrieb das Unternehmen laut Wiz’ Zitat. „Wenn der Nutzer Claude Code erstmals in einem Verzeichnis startet, muss er bestätigen, dass er dem Verzeichnis vertraut, bevor er die Sitzung startet. Das von Ihnen beschriebene Szenario beinhaltet, dass ein Nutzer eine Berechtigungsaufforderung in einem Verzeichnis ausdrücklich bestätigt, das einen bösartigen Symlink enthält, was außerhalb des Bedrohungsmodells von Claude Code liegt.“ Das Ticket wurde als „Informativ“ geschlossen.

Diese Argumentation hat eine kohärente Form: Der Nutzer vertraute dem Verzeichnis, genehmigte dann den Vorgang, also wurden beide Zustimmungsmomente respektiert. Wiz' Gegenargument lautet, dass eine informierte Zustimmung zutreffende Informationen erfordert – das Genehmigen von project_settings.json, während der Schreibvorgang in ~/.ssh/authorized_keys landet, ist formal eine Entscheidung und inhaltlich bedeutungslos. Wiz behauptet nicht, geklärt zu haben, welche Position richtig ist, und dieser Artikel ebenso wenig. Die praktische Beobachtung ist, dass AWS, Google und Cursor die andere Ansicht vertraten und einen Patch bereitstellten.

Wiz berichtete außerdem, dass sich Claude Code im Hintergrund des Streits verändert habe: Aktuelle Versionen, so schrieb das Unternehmen, lösten Symlinks auf und warnten, bevor in sensible Dateien geschrieben werde, und es wies darauf hin, dass Anthropic sich nicht dazu äußern wollte, ob dies mit dem Bericht zusammenhing. Am 7. Juli 2026 lieferte Anthropic eine Korrektur nach, die Wiz zitierte: „Die Symlink-Warnung im Berechtigungsdialog für Edit/Write wurde in v2.1.32 (5. Februar 2026) ausgeliefert, neun Tage bevor dieser Bericht bei uns eingereicht wurde. Sie wurde im Rahmen einer proaktiven Sicherheitshärtung aufgrund einer internen Prüfung hinzugefügt. Die Ablehnung einer Stellungnahme war eine automatische Antwort unseres Triage-Systems.“

Die zeitliche Abfolge der Versionen stimmt; die öffentliche Aufzeichnung dessen, was sich geändert hat, nicht. Claude Code 2.1.32 wurde am 5. Februar 2026 um 17:03 UTC in der npm-Registry veröffentlicht, also neun Tage vor dem Bericht vom 14. Februar, genau wie Anthropic sagt. Doch der öffentliche Changelog-Eintrag für diese Veröffentlichung listet zwölf Änderungen auf, darunter Agententeams, Memory-Aufzeichnung und mehrere UI-Korrekturen, und keine davon erwähnt Symlinks oder Berechtigungsdialoge. Die ersten Changelog-Zeilen, die genau dieses Verhalten beschreiben, sind viel später: Version 2.1.280, am 22. September 2026 bei npm veröffentlicht, vermerkt „Behoben: Schreibvorgänge über einen symlinkten Pfad, die anhand ihrer Schreibweise im Verzeichnisbaum beurteilt wurden: Die Aufforderung nennt, wo der Schreibvorgang landet“, und 2.1.287 verzeichnet am 1. Oktober 2026, dass ein Shell-Schreibvorgang über einen im Repository eingecheckten Symlink auf eine sensible Datei nun angibt, wo er landet, und wartet, bis ein Mensch bestätigt. Auch Wiz’ eigene Beobachtung, dass 2.1.173 und spätere Versionen Symlinks auflösen, kommt nach dem Bericht, da 2.1.173 am 11. Juni 2026 erschien.

Was gilt als gesichert und was nicht

• Bestätigt. Der Mechanismus: ein Köder-Symlink in einem Repository, ein Agent, der ihm folgt, ein Schreibvorgang, der außerhalb des Arbeitsbereichs landet, und eine Bestätigungsoberfläche, die den falschen Pfad angibt. Wiz hat es in allen sechs Produkten reproduziert und Screenshots veröffentlicht. Es gibt zwei CVE-Einträge, die von ihren CNAs veröffentlicht wurden, und das AWS-Bulletin bestätigt unabhängig die Lücke unter 1.69.0 und die Behebung. Anthropic bestreitet nicht, dass das Verhalten aufgetreten ist; es bestreitet, dass es sich um eine Schwachstelle handelt.

• Aus einer einzigen Quelle. Die Schweregradbewertungen für Augment, Windsurf und Google Antigravity sind Einschätzungen von Wiz, keine CNA-Bewertungen, da für keines der drei ein CVE veröffentlicht wurde. Die Behauptung, dass Windsurf und Amazon Q vor dem Erscheinen des Dialogs schreiben, stützt sich auf die Screenshots und Schilderungen von Wiz; kein Anbieter hat die Reihenfolge öffentlich bestätigt.

• Umstritten. Ob ein Tool seinem Nutzer Schutz vor einem täuschenden Arbeitsbereich schuldet oder ob Vertrauen in das Verzeichnis plus ein Klick die Frage entscheidet. Anthropic sagt Letzteres; Wiz sagt, die angezeigte Eingabeaufforderung habe den Klick bedeutungslos gemacht. Das Archiv kennzeichnet den Eintrag nicht als umstritten: Die Fakten sind unstrittig, und nur die Auslegung ist umstritten.

• Nicht geklärt. Ob Augment und Windsurf die Schwachstelle seit der Veröffentlichung behoben haben. Alle für diesen Artikel gesichteten Berichte, einschließlich der Notiz der Cloud Security Alliance vom 15. Juli 2026, beschreiben beide weiterhin als ungepatcht; von keinem der beiden Anbieter wurde eine öffentliche Mitteilung über eine Behebung gefunden.

Das Datum selbst birgt eine kleine Unstimmigkeit. Der Beitrag von Wiz und seine Offenlegungszeitleiste nennen beide den 8. Juli 2026, Infosecurity Magazine beschreibt das Proof of Concept als am 7. Juli veröffentlicht und datiert den eigenen Bericht auf den 9. Juli, und der Archiveintrag ist mit Tagesgenauigkeit auf den 9. Juli 2026 datiert. Die Erkenntnis, die Berichterstattung und das Archiv sind sich über die Woche nicht uneinig; beim Tag weichen sie um bis zu zwei Tage voneinander ab.

Frühere Arbeit zu einem der sechs verdient gesonderte Anerkennung. Evan Schuman von CSO Online schrieb am 9. Juli 2026, dass Cato Networks eine auf Cursor beschränkte Version der Schwachstelle vor Wiz’ breiter angelegter Untersuchung gemeldet hatte. Der Bericht von SecurityWeek über diese Untersuchung, veröffentlicht am 3. Juli 2026, nennt sie DuneSlide, ordnet dem Paar CVE-2026-50548 und CVE-2026-50549 zu, bewertet beide mit 9,8 und datiert die Cursor-3.0-Version, die sie behob, auf den 2. April — Angaben, die nicht mit Wiz’ Zeitlinie übereinstimmen, die die Veröffentlichung von Cursors Fix auf den 5. Juni legt, oder mit dem am 25. Juni veröffentlichten CNA-Eintrag mit 9,3. Die 9,8 und die 9,3 sind zwei Bewertungen derselben Schwachstelle; die April- und Juni-Daten könnten ein Release und ein Advisory beschreiben, statt sich darüber uneinig zu sein, wann der Patch ausgeliefert wurde.

Was hat sich danach geändert?

Konkret: Amazon-Q-Developer-Nutzer wurden auf Sprachserver 1.69.0 umgestellt, in den meisten Konfigurationen automatisch; Google-Antigravity-Nutzer ab dem 22. Mai 2026 auf 1.19.6; Cursor-Nutzer auf 3.0; und Claude-Code-Nutzer auf eine Version, die Links auflöst, wobei weitere Änderungen an der Prompt-Treue im September und Oktober 2026 in 2.1.280 und 2.1.287 erscheinen. Augment- und Windsurf-Nutzer erhielten nach den zum Zeitpunkt der Veröffentlichung verfügbaren Belegen lediglich ein Datum, auf das sie achten sollten, und sonst nichts.

Die eigenen Empfehlungen von Wiz waren eng gefasst und technisch: Symlinks auflösen, bevor ein Prompt angezeigt wird, ausdrücklich warnen, wenn der aufgelöste Pfad außerhalb des Arbeitsbereichs liegt, und niemals vor ausdrücklicher Genehmigung auf die Festplatte schreiben, sodass der Dialog ein Tor statt einer Rückgängig-Schaltfläche ist. Die Notiz der Cloud Security Alliance ergänzt den Governance-Rahmen – Coding-Assistenten als privilegierte Software mit Dateisystemzugriff behandeln statt als Editor-Plugins, und Anbieter direkt fragen, ob Pfade aufgelöst werden, bevor eine Bestätigung erscheint. Katie Norton von IDC, zitiert von CSO Online, verortete das Restrisiko dort, wo die Lieferkette bereits läuft: externe Beitragende, geforkte Repositories und Abhängigkeiten von Drittanbietern, „statt im intern verfassten Code“.

Offen bleibt die Designfrage, nicht der Bug. Sechs unabhängig voneinander gebaute Produkte konvergierten auf dieselbe Abfolge — den angeforderten Pfad anzeigen, dem Klick vertrauen —, und die Abweichung danach betraf die Haftung, nicht den Mechanismus. Der Archiveintrag trägt eine Landmarken-Kennzeichnung, also das Urteil des Archivs, dass der Datensatz eine Kategorie beschreibt und nicht den Fehler eines einzelnen Anbieters, und dieser Lesart lässt sich schwer widersprechen: Derselbe kurze Proof of Concept funktionierte sechs Mal.

Abstract technical illustration on a dark navy field: a pale translucent check mark, drawn as a thin outline, floats above a small white rectangle that represents an approval surface. Beneath the rectangle a white line drops vertically, passes through a faint horizontal plane, and emerges on the other side pointing at a second dark rectangle that is drawn only as an outline, unlit. A soft amber glow marks the point where the line crosses the plane. No text, people or organisation logos appear. The OrcaRouter logo is composited in the bottom-right corner.