CI-systemen vormen de ruggengraat van moderne softwareontwikkeling. Juist daarom is het zo zorgwekkend wanneer een ogenschijnlijk onschuldige GitHub issue kan uitgroeien tot echte impact op de CI-workflows kwetsbaar zijn. Novee Security onderzocht de standaardconfiguraties van agent-achtige coding tools bij meerdere aanbieders en vond kwetsbaarheden waarbij het pad van “onbetrouwde input” naar “code uitvoeren” in de harness te ruim bleek.
In dit artikel zetten we de bevindingen op een rij: wat er misging, welke componenten werden geraakt, welke versies je moet bijwerken en welke maatregelen je vandaag al kunt toepassen in je CI/CD-omgeving.
Wat Novee Security aantoont: van issue naar runner
Het uitgangspunt was opvallend simpel. In de onderzochte setups was een GitHub issue, aangemaakt door een account zonder repository-privileges, voldoende om code te laten uitvoeren op CI-runners die horen bij de coding-agent omgevingen van de betrokken partijen. Voor OpenAI geldt volgens de bron dat het zelfs genoeg was om de volgende agent-run te kapen.
Belangrijk: Novee Security testte hierbij de agenten in de configuratie die vendors “by default” meegeven. Daarmee wordt het probleem direct relevanter voor organisaties die tools uitpakken zoals geleverd, zonder extra hardening.
Gemini CLI: OS-command injection via .env/container launcher
Van de twee gepubliceerde CVE’s springt één issue eruit door de ernst. Bij Gemini CLI gaat het om CVE-2026-12537 met een CVSS-score (v4) van 10.0. Het probleem is een OS command injection in de container launcher. De aanval komt op gang via een geconstrueerd .gemini/.env-bestand.
Daardoor kan een aanvaller met lage rechten code op de host van een headless CI-platform uitvoeren voordat de sandbox überhaupt start. Met andere woorden: je krijgt niet “alleen” een sandboxcompromis, maar mogelijk vroege host-executie.
De bron vermeldt de volgende gepatchte versies:
- Gemini CLI update naar 0.39.1
- run-gemini-cli update naar 0.1.22
Claude Code: exfiltratie via download-counter als kanaal
Bij Claude Code gaat het om CVE-2026-54316. Deze bug verandert een publieke download-counter van Hugging Face in een exfiltratiekanaal waarmee een API-key één karakter per keer kon worden gelekt.
Volgens de bron zijn versies tussen en met de volgende range betrokken: elke Claude Code release van 0.2.54 tot en met 2.1.163 is beïnvloed. De fix is opgenomen in versie 2.1.163.
Anthropic stelt daarbij dat uitbuiting vereiste dat onbetrouwbare content in de “Claude Code context” terechtkomt. De exacte technische voorwaarden worden in het bronstuk niet volledig uitgewerkt, maar het kernpunt voor defenders blijft hetzelfde: voorkom dat externe/ongeverifieerde content directe invloed krijgt op wat de agent kan uitvoeren of publiceren.
De fix die je dus moet doorvoeren:
- Claude Code update naar 2.1.163
Waarom dit vaker gebeurt: de harness tussen model en echte wereld
Een terugkerend inzicht uit het onderzoek is dat de grootste fout vaak niet bij het “model” zit, maar bij de harness: het stuk code dat beslist wat er werkelijk gebeurt nadat het model ergens om vraagt. Novee beschrijft dit concept expliciet met een quote: “The harness is the code between the model and the real world.”
In beide gepubliceerde CVE-cases zit de kern in een mismatch tussen wat als “veilig” is gemarkeerd en wat later met meer autoriteit wordt uitgevoerd. Dat is precies het soort ontwerpkeuze dat in CI-omgevingen extra gevaarlijk is, omdat CI vaak toegang heeft tot secrets, tokens en registraties.
Claude Code detail: validator verwijdert geen single-quoted payload in juiste context
Voor Claude Code meldt Novee Security een bijzonder technisch detail. De command validator zou single-quoted tekst strippen voordat een set van 23 checks wordt uitgevoerd—en volgens de bron is dat correct gedrag voor bash. Maar door een payload te plaatsen in de waarde van git push –receive-pack, waarbij een flag wordt geactiveerd die git uitvoert, bereikte de runner het verzoek uiteindelijk “onaangetast”.
De bron stelt dat deze keten geen CVE heeft en dat er ook geen openbaar vaste versie is genoemd voor dit deel. Dit betekent niet dat het onbelangrijk is, maar wel dat je de risico-inschatting vooral moet baseren op workflow-hardening en control over triggers, niet alleen op versienummers.
Gemini CLI detail: allowlist alleen bij registratie, niet bij runtime
Bij Gemini CLI vond Novee Security dat de tool allowlist slechts werd gecheckt op het moment dat tools werden geregistreerd, en niet op het moment van uitvoering. Onder –yolo lijkt bovendien auto-approval te ontstaan voor commando’s die door het model worden gevraagd.
Google heeft volgens de bron zowel dit runtime allowlist-probleem als de container-launcher fout aangepakt in één advisory. Die advisory geeft aan dat de fix “affects all Gemini CLI GitHub Actions”. Ook hier geldt: update je Gemini CLI tooling en neem daarnaast je CI-architectuur kritisch onder de loep.
Geen CVE voor Codex: workflow-architectuur en repository-instructie bestanden
Novee Security rapporteerde daarnaast een Codex-vinding die volgens de bron geen product-version patch en ook geen CVE opleverde. Wat wel duidelijk is: in een situatie waarin het openai/codex-repository tijdens een job twee passes draaide die dezelfde checkout deelden, kon de eerste pass een bestand als AGENTS.md schrijven. De tweede pass laadde dat bestand vervolgens als eigen instructie.
De chain startte doordat een JSON-validatie tussen passes faalde, waardoor de tweede pass alsnog werd gestart. Daarna volgden maatregelen vanuit OpenAI: de bron vermeldt dat OpenAI de workflow nu opsplitst in verschillende jobs, Codex draait met drop-sudo en een read-only sandbox.
OpenAI’s guidance noemt bovendien expliciet dat repository-instructiebestanden onderdeel zijn van de categorie content die je moet zien als untrusted input surface. Daarnaast adviseren ze Codex als laatste stap te runnen om te voorkomen dat bestanden achterblijven die latere, privileged stappen misbruiken.
Dit is een nuttige les voor iedereen met agent-gedreven CI/CD: zelfs als je geen “klassieke kwetsbaarheid” vindt in een tool, kunnen job- en file-architectuur net zo goed de aanvalsnodige ruimte bieden.
Wat is er mis met uitbuiting? CISA noemt “none”
De bron meldt dat CISA voor zowel Gemini als Claude Code aangeeft dat exploitatie op dat moment geen bekende aanwijzingen heeft. Ook staat het volgens de bron niet in de “Known Exploited Vulnerabilities”-catalogus. Bovendien vermeldt de bron dat er een GitHub repository circuleert die zichzelf presenteert als een “reproduction lab” voor de Claude Code flaw, maar dat er geen aanwijzingen in de onderzochte bronnen staan dat dit tegen echte targets is gebruikt.
Dat betekent niet dat je moet wachten: in supply chain security draait het om het verminderen van de kans op misbruik zodra proof-of-concept of reproducties rondgaan.
Concreet: wat je nu moet doen in je eigen CI
De bron eindigt met duidelijke actiepunten—en die kun je als checklist gebruiken.
1) Update de getroffen componenten
- Gemini CLI naar 0.39.1 en run-gemini-cli naar 0.1.22
- Claude Code naar 2.1.163
2) Audit workflows die extern te triggeren zijn
Een cruciaal scenario is dat een buitenstaander iets kan aanleveren dat je workflow kan laten draaien (bijvoorbeeld via issue-triggers, PR’s of repository-events). De bron benadrukt dat je workflows moet controleren die “outside user” kunnen triggeren.
3) Bescherm secrets en beperk wat runners mogen
Omdat de kernfout in de harness tussen model en echte wereld zit, is het verstandig om de impact te reduceren met principes als least privilege. Zorg dat je CI niet meer doet dan nodig is, zeker niet voordat je zeker weet dat alle input te vertrouwen is.
4) Behandel instructiebestanden als onbetrouwbaar
Een extra les uit de Codex-vinding: file- en job-scheiding helpt. Als een workflow bestanden schrijft of leest die door eerdere stappen kunnen worden aangepast, ontstaat er een route voor ongewenste instructie-injectie. Maak die data waar mogelijk read-only of niet-deelbaar tussen runs.
Gerelateerde security-aandachtspunten binnen het onderwerp
Als je bezig bent met CI/CD en agent-gedreven workflows, is het waardevol om breder te kijken naar fouten die tokens of toegang kunnen lekken via “keten” en configuratie. Je kunt bijvoorbeeld ook deze eerdere artikelen meenemen bij je audit:
- Malware misbruikt Windows Hello for Business keys — relevant voor het begrijpen van hoe credentials misbruikt kunnen worden zodra een stap in de keten zwak is.
- Governance vs compliance in cyberrisk — nuttig om de organisatorische kant van supply chain security goed in te richten.
Conclusie
De kernboodschap van het onderzoek is helder: CI-workflows kwetsbaar kan worden wanneer onbetrouwbare input via GitHub-events of issues invloed krijgt op wat een agent uiteindelijk uitvoert. Bij Gemini CLI leidde een container-launcher bug tot OS command injection, en bij Claude Code werd een publieke download-counter een exfiltratiekanaal. Daarnaast laat de Codex-vinding zien dat workflow-ontwerp en file-scheiding net zo belangrijk zijn als tool-updates.
Update daarom direct de genoemde versies, audit workflows die je extern kunt triggeren, en verlaag de privileges en secret-toegang binnen runners. Daarmee maak je je CI/CD niet alleen “patch-ready”, maar ook beter bestand tegen de volgende variant van dit type harness-probleem.
Bron: https://thehackernews.com/2026/08/claude-code-and-gemini-cli-flaws-let.html
