Luecke in Claude Code: Ein GitHub-Issue erreicht CI-Geheimnisse
Ein GitHub-Issue, geoeffnet von jemandem ohne jedes Recht am Repository, reichte aus, um an die Geheimnisse seiner Build-Pipeline zu kommen. Novee Security zeigte das am 5. August 2026 auf der Black Hat USA gleich an drei KI-Agenten fuer Code: Claude Code von Anthropic, Gemini CLI von Google und Codex von OpenAI. Keiner der Angriffe brach das Modell. Gebrochen wurde die Umgebung darum herum, der ganz gewoehnliche Code, der entscheidet, welche Befehle das Modell ausfuehren darf.
Wie ein GitHub-Issue an CI-Geheimnisse kommt
Alle drei Agenten haengen auf dieselbe Weise an der Continuous Integration. Ein Ereignis im Repository, ein Issue oder ein Pull Request, startet einen Workflow, der Workflow startet den Agenten auf einem Runner, und der Agent liest den Ereignistext als Teil seiner Aufgabe. Diesen Text schreibt derjenige, der das Issue geoeffnet hat. In einem oeffentlichen Repository also schlicht jeder.
Prompt Injection ueber solchen Text ist ein bekanntes Problem, und jedes dieser Werkzeuge hat eine Pruefschicht, die das eindaemmen soll. Die Untersuchung handelt davon, dass diese Schicht versagt, nicht davon, dass das Modell leichtglaeubig waere. Auf einem Runner liegen die Zugangsdaten, die die Pipeline braucht: Repository-Tokens, Cloud-Schluessel, die API-Schluessel des Agenten selbst. Wer auf dem Runner einen Befehl ausfuehrt, erreicht all das.
Die Luecke in Claude Code: ein Streit um Anfuehrungszeichen und ein Download-Zaehler
Die Kette bei Claude Code begann mit einer Unstimmigkeit ueber Anfuehrungszeichen. Der Befehlsvalidator entfernte einfach zitierten Text, bevor er seine dreiundzwanzig Sicherheitspruefungen anwandte, in der Annahme, eine Shell wuerde den zitierten Inhalt als harmlose Daten behandeln. Anschliessend reichte die Umgebung den Befehl ohne diese Anfuehrungszeichen weiter. Ein Wert, der in gits Flag --receive-pack geschmuggelt wurde, sah bei der Pruefung deshalb harmlos aus und lief auf dem Runner.
Danach wird es interessant. Anthropic lieferte einen Patch, und die Forscher fanden einen zweiten Weg ueber tac, einen rein lesenden Befehl, der Dateiinhalte umkehrt, und druckten einen API-Schluessel rueckwaerts in ein oeffentliches Build-Log. Auch das wurde geschlossen. Die dritte Runde, gefuehrt als CVE-2026-54316, verzichtete ganz aufs Drucken: Der Schluessel floss Zeichen fuer Zeichen ueber den oeffentlichen Download-Zaehler eines Hugging-Face-Modells ab, ausgelesen von aussen. Die Bewertung liegt bei 9,1 nach CVSS v3.1 und 6,0 nach CVSS v4; Anthropic stuft die Sache als moderat ein, weil ein Angreifer zunaechst nicht vertrauenswuerdigen Inhalt in den Kontext des Agenten bringen muss. Betroffen sind Versionen ab 0.2.54, der Fix kam in 2.1.163, Advisory GHSA-fg94-h982-f3mm.
Gemini CLI: die schlechteste Bewertung der drei
Googles Werkzeug traf es haerter. CVE-2026-12537 traegt einen CVSS-Wert von 10,0: Der Container-Starter las seine Werkzeug-Freigabeliste genau einmal, bei der Registrierung, und erzwang zur Laufzeit gar nichts. Unter dem Flag --yolo wurde jeder vom Modell angeforderte Befehl automatisch genehmigt, und eine OS-Befehlsinjektion ueber eine praeparierte Datei .gemini/.env fuehrte Code auf dem CI-Host aus, noch bevor die Sandbox ueberhaupt startete. Verwundbar sind alle Versionen bis einschliesslich 0.39.0, der Fix steckt in 0.39.1, die GitHub Action wurde auf run-gemini-cli 0.1.22 gehoben, Advisory GHSA-wpqr-6v78-jr5g.
Bei Codex lief es anders. Zwei Codex-Durchlaeufe teilten sich in derselben Aufgabe einen Checkout, sodass der erste Durchlauf eine Datei AGENTS.md schreiben konnte, die der zweite dann als Anweisungen lud. OpenAIs Position: Die Sandbox verhielt sich genau wie dokumentiert, deshalb gab es keinen Versionspatch. Geaendert wurden stattdessen die Workflow-Empfehlungen, die die Durchlaeufe auf getrennte Jobs verteilen und Anweisungsdateien im Repository ausdruecklich zur nicht vertrauenswuerdigen Eingabeflaeche zaehlen.
Warum der gestohlene Zugang weiter funktioniert
Eine eigene Untersuchung von Silverfort, veroeffentlicht am 28. Juli 2026, erklaert, warum ein einziger Diebstahl so viel wert ist. Unter macOS legt die Claude Code CLI ihr OAuth-Buendel als generisches Passwort im Schluesselbund ab, unter dem Dienstnamen "Claude Code-credentials", erzeugt ueber /usr/bin/security ohne Argumente zur Zugriffskontrolle. Der Eintrag erbt die Standard-Zugriffsliste, die dem erzeugenden Werkzeug vertraut. Da dieses Werkzeug eine universelle Apple-Binaerdatei ist, die jeder Prozess aufrufen kann, liefert eine einzige Befehlszeile das gesamte Buendel zurueck, ohne Touch ID und ohne Passwort.
Im Buendel stecken ein kurzlebiges Access-Token und ein langlebiges Refresh-Token, dazu Zugangsdaten verbundener MCP-Server. Das Problem ist das Refresh-Token: Es laesst sich gegen neue Access-Tokens tauschen, bis es jemand widerruft, und es ist weder an ein Geraet noch an eine Adresse gebunden. Anthropic wertet das nicht als Schwachstelle und argumentiert, Prozesse desselben Benutzers seien ohnehin vertrauenswuerdig, verfolgt eine strengere Zugriffskontrolle aber als Haertungsmassnahme. Bemerkenswert ist, dass die hauseigene Desktop-App es anders macht: Dort liegen die Tokens verschluesselt, mit einem an die Codesignatur gebundenen Schluessel, und jeder fremde Zugriff darauf loest eine Passwortabfrage aus.
Was zu tun ist, wenn Sie solche Agenten betreiben
- Zuerst aktualisieren: Claude Code 2.1.163 oder neuer, Gemini CLI 0.39.1 zusammen mit run-gemini-cli 0.1.22. Fuer Codex gibt es nichts zu installieren, dort ist der Workflow selbst zu aendern.
- Keine oeffentlichen Ereignisse als Ausloeser: Ein Workflow, der bei jedem Issue oder Pull Request aus jedem Konto startet, uebergibt die Eingabeflaeche an Fremde. Verlangen Sie ein Label, den Kommentar eines Maintainers oder eine Fork-Pruefung.
- Die Geheimnisse des Runners beschneiden: Geben Sie dem Job das engste Token, mit dem er auskommt, und halten Sie langlebige Cloud-Schluessel aus Workflows heraus, an die ein Agent herankommt.
- Durchlaeufe trennen: Teilen sich zwei Agentenlaeufe einen Checkout, kann der erste die Anweisungen schreiben, denen der zweite folgt. Getrennte Jobs, getrennte Checkouts.
- Bei Verdacht rotieren, nicht erst bei Beweis: abmelden, neu anmelden, danach die Konsolenschluessel wechseln. Das Saeubern des Rechners entwertet kein Refresh-Token, das bereits abgeflossen ist.
- Auf dieselbe Sitzung auf zwei Rechnern achten: Das Wiederverwenden von Zugangsdaten auf verschiedenen Hosts ist genau das Signal, das diese Tokens ermoeglichen, weil nichts sie an ein Geraet bindet.
Warum das nicht nur Entwickler angeht
Das Muster wiederholt sich, je selbststaendiger Agenten werden: Der Angriff kommt nicht als Netzwerkverkehr, den man inspizieren koennte, sondern als Inhalt, und er laeuft innerhalb einer bereits vertrauten Sitzung. Ueber dieselbe Form haben wir geschrieben, als ein KI-Browser durch einen Beitrag uebernommen werden konnte, den der Nutzer nie anklickte, und aus demselben Grund ist eine Kette wie die Luecke im WordPress-Login, die mit Code auf dem Server endet, gefaehrlich, obwohl ein Administrator dafuer nur eine Seite oeffnen muss. Genau hier liegt auch die ehrliche Grenze von Werkzeugen fuer Netzwerk-Privatsphaere. Ein VPN verbirgt Ihren Verkehr vor dem Netz, in dem Sie sitzen, und verschiebt den scheinbaren Standort; es hat keinen Einblick darin, was Ihr eigener Agent auszufuehren beschliesst, und es steht nicht zwischen einem Prozess und dem Schluesselbund auf demselben Laptop. Transportverschluesselung war nie die Grenze, die diese Angriffe ueberschreiten.
Fazit
• Claude Code and Gemini CLI Flaws Let a GitHub Issue Reach CI Workflow Secrets - The Hacker News
• Critical Flaws in Claude Code, Gemini CLI, and OpenAI Codex Enable RCE and Supply Chain Attacks - GBHackers
• Skipping the lock: A Claude Code CLI weakness lets any macOS process read stored credentials - Silverfort