Coding-Agenten: Wenn die Freigabe nicht hält
Mistral Vibe, Roo Code, Junie CLI, ZCode und das Claude Agent SDK: Fünf Lücken, bei denen die Befehlsfreigabe des Agenten nicht das prüft, was dann läuft.
Zwischen dem 13. und dem 16.10.2026 sind fünf Sicherheitshinweise zu Coding-Agenten und einem Agenten-SDK erschienen. Die Werkzeuge sind verschieden, das Muster ist dasselbe. Ein Agent entscheidet, ob er etwas ohne Rückfrage ausführen darf, und prüft dabei etwas anderes als das, was am Ende tatsächlich läuft.
Das ist der Punkt, an dem ihr einem Agenten vertraut, wenn ihr "immer erlauben" für harmlose Befehle einstellt oder ein fremdes Repository öffnet. Bei vier der fünf Werkzeuge reicht ein Update. Bei einem kommt keins mehr.
Die Fälle im Überblick
| Werkzeug | Lücke | Betroffen | Was tun |
|---|---|---|---|
| Mistral Vibe | Versteckter Befehl rutscht durch die Freigabe | vor 2.25.4 | auf 2.25.4 oder neuer (seit 12.09. verfügbar) |
| Roo Code | Verbotener Befehl wird automatisch freigegeben | bis 3.54.0, also alle | Projekt eingestellt, umsteigen |
| JetBrains Junie CLI | Startet MCP-Server aus fremdem Projekt | vor 26.8.3 | auf 26.8.3 oder neuer |
| Z.ai ZCode | Verbindet sich ungefragt mit MCP-Servern aus dem Repo | 3.11.2.6792 | Fix-Stand unklar, fremde Repos meiden |
| Claude Agent SDK (Python) | Session-ID schleust Kommandozeilen-Flags ein | vor 0.2.121 | auf 0.2.121 oder neuer (seit 17.07. verfügbar) |
Die Freigabe liest den Befehl anders als die Shell
Zwei der Fälle betreffen Befehlsfreigaben, die mit einer Liste erlaubter Kommandos arbeiten.
Mistral Vibe zerlegt Befehle mit einem statischen Parser (tree-sitter-bash) und klassifiziert sie danach. Laut Advisory lässt sich eine Command Substitution in einem Variablenwert in einfachen Anführungszeichen verstecken und mit dem Bash-Operator ${var@P} zur Laufzeit wieder auspacken. Der Parser sieht nur das harmlose erlaubte Kommando am Ende, Bash führt den versteckten Teil mit aus. CVE-2026-109429, Schweregrad High (8.8). Der Fix steckt in Version 2.25.4, die schon am 12.09. erschienen ist. Das Advisory kam erst einen Monat später.
Roo Code entfernt vor dem Abgleich mit der Freigabeliste Umleitungen wie 2>&1. Der verwendete reguläre Ausdruck erwischt laut dem Writeup des Finders aber auch ein nacktes >&. Aus >&echo touch /tmp/datei wird für die Prüfung echo touch /tmp/datei, und weil echo erlaubt ist, gibt Roo Code den Befehl automatisch frei. Bash versteht dasselbe als "Ausgabe in eine Datei namens echo umleiten, dann touch ausführen". Ausnutzbar ist das, wenn die automatische Freigabe für Befehle eingeschaltet ist, und zwar auch über indirekte Prompt Injection, etwa aus einer Datei im Repository. CVE-2026-110202, High (8.8).
Bei Roo Code wiegt etwas anderes schwerer als die Lücke selbst. Das Repository ist seit dem 16.05.2026 archiviert, Version 3.54.0 vom 15.05. war die letzte. Die Erweiterung lässt sich weiter installieren und läuft auch, Sicherheitsupdates bekommt sie aber nicht mehr. Wer Roo Code noch nutzt, sollte jetzt auf ein gepflegtes Werkzeug wechseln. Roo Code war selbst ein Fork von Cline. Cline und der aus Roo Code hervorgegangene Kilo Code werden beide weiterentwickelt.
Das Repository bringt seine eigenen MCP-Server mit
Zwei weitere Fälle haben gar keine Freigabe umgangen, weil es keine gab.
JetBrains Junie CLI konnte vor Version 26.8.3 Code über die MCP-Konfiguration eines nicht vertrauenswürdigen Projekts ausführen (Advisory, CVE-2026-111091, High 7.8). Mehr Details nennt JetBrains nicht.
Z.ai ZCode in Version 3.11.2.6792 verbindet sich laut der Beschreibung des Finders beim Öffnen eines Workspaces mit allen MCP-Servern, die in der Datei .zcode/config.json des Repositorys stehen, ohne Rückfrage. Bei stdio-Servern startet ZCode den eingetragenen Befehl direkt. Ein Repository zu öffnen heißt damit, jeden Befehl auszuführen, den es mitbringt. Im Nachweis des Finders ließ eine präparierte Werkzeugbeschreibung den Agenten zusätzlich die lokale Datei mit ZCode-Zugangsdaten an den fremden Server schicken. CVE-2026-88755, High (7.8). Ob neuere ZCode-Versionen das beheben, geht aus dem Advisory nicht hervor. Es ist nicht der erste Befund zu ZCode: Im September fiel das Werkzeug schon auf, weil es die Git-Historie heimlich hochlädt.
Wie es anders geht, zeigt Claude Code. Laut Dokumentation fragt es in interaktiven Sitzungen nach, bevor es MCP-Server aus einer .mcp.json im Projekt nutzt. Genau dieser Dialog ist die Stelle, an der ihr bei fremden Repositories kurz innehalten solltet. Die Dokumentation nennt aber auch Ausnahmen: In nicht-interaktiven Läufen mit claude -p und in Sitzungen über das Agent SDK kann Claude Code nicht nachfragen und lädt die Server aus dem Projekt ohne Rückfrage. Wer Agenten in CI-Pipelines auf fremden Code loslässt, sollte das wissen. Einzelne Server lassen sich über disabledMcpjsonServers dauerhaft sperren.
Das SDK reichte die Session-ID ungeprüft weiter
Der fünfte Fall betrifft nicht ein Werkzeug, das ihr bedient, sondern eines, mit dem ihr selbst Agenten baut. Das Claude Agent SDK für Python gab die Option resume, also die ID der Sitzung, die fortgesetzt werden soll, ungeprüft an die Claude CLI weiter. Ein Wert, der mit - beginnt, wurde dort als eigenes Kommandozeilen-Flag gelesen. Damit ließ sich ein --mcp-config einschleusen, das einen stdio-MCP-Server definiert und beim Start der CLI beliebige Befehle ausführt, an den Berechtigungen des SDK vorbei (Advisory, CVE-2026-96620, Critical).
Die Voraussetzung ist eng. Ausnutzbar war das nur in Anwendungen, die eine Session-ID aus fremder Hand übernehmen, etwa aus einem URL-Parameter oder einem Formularfeld. Wer die IDs selbst erzeugt und speichert, war nicht betroffen. Behoben ist es seit Version 0.2.121 vom 17.07.2026, das Advisory erschien erst am 16.10. Wer das SDK in den letzten drei Monaten aktualisiert hat, hat den Fix also schon. Unabhängig davon gilt: Alles, was ein Nutzer schicken kann, gehört geprüft, bevor es in einen Prozessaufruf wandert.
Was ihr mitnehmen solltet
- Versionen prüfen und updaten: Mistral Vibe auf 2.25.4, Junie CLI auf 26.8.3,
claude-agent-sdkauf 0.2.121, jeweils oder neuer. - Roo Code ersetzen. Ein eingestellter Agent mit Shell-Zugriff ist ein offenes Risiko, auch wenn er noch funktioniert.
- Automatische Freigaben sparsam halten. Eine Freigabeliste schützt nur so gut, wie der Agent Befehle zerlegen kann, und mehrere Fälle in diesem Jahr zeigen, dass das schwieriger ist, als es aussieht. Wer Befehle ohne Rückfrage laufen lässt, sollte den Agenten in einer Sandbox oder einem Container betreiben.
- Fremde Repositories mit Vorsicht öffnen. Liegt eine MCP-Konfiguration im Projekt, vor dem ersten Start ansehen, was sie startet.
Dass Schutzmechanismen von Coding-Agenten an solchen Details scheitern, zeigte im September auch Plugin4Shell: Dort hielt das SHA-Pinning von Plugins in Claude Code, Codex, Copilot und Gemini CLI nicht, was es versprach. Einen Überblick über die Werkzeuge selbst gibt KI-Coding-Tools im Vergleich.
Quellen11
- GitHub Advisory GHSA-m84r-3mrm-j4p8: Mistral Vibe command permission gate bypass (CVE-2026-109429, 13.10.2026)github.com
- GitHub: Mistral Vibe Release v2.25.4 (12.09.2026)github.com
- GitHub Advisory GHSA-v45q-xfmj-r4wr: Roo Code command approval bypass (CVE-2026-110202, 13.10.2026)github.com
- 7rah/oss-cve: Roo Code, auto-approve bypass via >& redirect (Writeup mit PoC)github.com
- GitHub: RooCodeInc/Roo-Code, Repository archiviert am 16.05.2026github.com
- GitHub Advisory GHSA-44gv-r4c4-w64m: JetBrains Junie CLI, code execution via untrusted MCP configuration (CVE-2026-111091, 15.10.2026)github.com
- GitHub Advisory GHSA-2vx4-m2rp-32rx: Z.ai ZCode connects to repository-declared MCP servers (CVE-2026-88755, 16.10.2026)github.com
- lkloliver: CVE-2026-88755, Beschreibung und Nachweis für ZCodegist.github.com
- Claude Code Docs: Connect Claude Code to tools via MCP, Abschnitt zu projektbezogenen Serverncode.claude.com
- GitHub Advisory GHSA-h4mw-j7qp-8mwm: Claude Agent SDK argument injection via resume option (CVE-2026-96620, 16.10.2026)github.com
- GitHub: claude-agent-sdk-python Release v0.2.121 (17.07.2026)github.com