Claude Code GitHub Actions integriert Claude in CI/CD-Pipelines, etwa zur Triage von Issues, zum Setzen von Labels, zur Prüfung von Pull Requests oder zum Ausführen von Slash-Befehlen. Standardmäßig erhält der Workflow Lese- und Schreibzugriff auf Code, Issues, Pull Requests, Diskussionen und Workflow-Dateien eines Repositories. Gerade wegen dieser weitreichenden Rechte sollte die Action laut Konzept nur von Nutzern mit Schreibzugriff ausgelöst werden.
Genau diese Prüfung ließ sich jedoch umgehen. Nach Angaben von RyotaK akzeptierte der Trigger jede Identität, deren Name auf [bot] endete. Dahinter stand die Annahme, dass GitHub-Apps grundsätzlich vertrauenswürdig seien, wenn Administratoren sie installiert haben. Tatsächlich kann aber jeder eine GitHub-App registrieren, sie auf einem eigenen Repository installieren und mit deren Token auf jedem öffentlichen Repository ein Issue oder einen Pull Request eröffnen. Die Action behandelte solche Eingaben dann als vertrauenswürdig. Im sogenannten Tag-Modus gab es noch eine zusätzliche Prüfung, ob hinter dem Auslöser tatsächlich ein Mensch steht; im Agent-Modus fehlte diese Absicherung.
Für den eigentlichen Angriff nutzte RyotaK indirekte Prompt-Injection: Dabei werden Anweisungen in Inhalte eingebettet, die ein KI-Modell liest, sodass es diesen Anweisungen statt seiner eigentlichen Aufgabe folgt. Der Forscher formulierte ein Issue so, dass dessen Text wie eine Fehlermeldung wirkte, und verfeinerte den Prompt so lange, bis Claude zur „Wiederherstellung“ die darin versteckten Befehle ausführte. Ziel war /proc/self/environ, die Linux-Datei mit den Umgebungsvariablen eines Prozesses. Obwohl Claude Code einfache Leseversuche blockiert, umging RyotaK diese Sperre und brachte Claude dazu, die ausgelesenen Werte zurück in das Issue zu schreiben.
Besonders kritisch war dabei ein Zugangsdatenpaar aus den Umgebungsvariablen, das GitHub Actions für die Anforderung eines OIDC-Tokens verwendet. Dieses signierte Token bestätigt, dass ein bestimmter Workflow in einem bestimmten Repository läuft. Claude Code tauscht es beim Backend von Anthropic gegen ein Installations-Token der Claude GitHub App mit Schreibrechten aus. Wer diese Zugangsdaten abgreift und den Austausch wiederholt, erhält Schreibzugriff auf Code, Issues und Workflows des Ziel-Repositories. Gegen das Repository von claude-code-action selbst gerichtet, hätte sich damit die Action kompromittieren lassen, die nachgelagerte Projekte beziehen.
RyotaK meldete außerdem einen weniger harten Angriffsweg, der den Bot-Trick gar nicht benötigte. Anthropics eigenes Beispiel für einen Issue-Triage-Workflow wurde mit allowed_non_write_users: “*” ausgeliefert und erlaubte damit jedem das Auslösen der Action. Laut Quelltext kennzeichnen Anthropics Dokumentation diese Einstellung bereits selbst als riskant. Hinzu kam, dass Claude Aufgaben-Zusammenfassungen in das öffentlich sichtbare Zusammenfassungsfeld eines Workflow-Laufs schrieb, was einen direkten Kanal für Datenabfluss eröffnete. Zahlreiche Repositories hätten dieses Beispiel übernommen und damit die Schwachstelle geerbt.
Ein weiterer beschriebener Pfad betrifft Angreifer, die Issues bearbeiten, Claude aber nicht selbst auslösen können. In diesem Fall lässt sich ein von einem vertrauenswürdigen Nutzer eröffnetes Issue nachträglich verändern – und zwar nachdem der Workflow gestartet wurde, aber bevor Claude den Inhalt liest. Der eingeschleuste Inhalt erscheint der Action dann als vertrauenswürdige Eingabe.
Anthropic empfiehlt das Update auf claude-code-action v1.0.94 oder neuer. Außerdem sollten Workflows überprüft werden, in denen Nutzer ohne Schreibrechte oder Bots Claude auslösen dürfen. Wenn dabei nicht vertrauenswürdige Eingaben verarbeitet werden, sollten laut Quelltext keine Geheimnisse außer dem Anthropic-API-Schlüssel und dem GITHUB_TOKEN bereitgestellt sowie Werkzeuge und Berechtigungen entfernt werden, die sich zur Exfiltration nutzen lassen.
Einen öffentlichen Hinweis darauf, dass genau der Weg zur Vergiftung von Anthropics eigener Action gegen ein reales Ziel eingesetzt wurde, gibt es laut Bericht nicht. RyotaK habe dies nur in eigenen Test-Repositories nachgewiesen und trenne diesen Nachweis ausdrücklich von anderen Varianten, die tatsächlich ausgenutzt wurden. Nach eigenen Angaben hat der Forscher inzwischen rund 50 verschiedene Wege gemeldet, um das Berechtigungssystem von Claude Code zu umgehen und Befehle auszuführen.
