Computerschermen met code onder gekleurd licht
Inzicht11 juli · 17:007 leestijd

AI laten checken wat AI schreef is geen veiligheidslaag, het is dezelfde blinde vlek twee keer

Een tweede AI die de code van de eerste reviewt voelt als een controlelaag. Maar dezelfde promptinjectie die de coder fopt, fopt de reviewer. Onafhankelijkheid, niet intelligentie, maakt een review een review.

Twee sloten op je voordeur voelen veiliger dan één slot. Tenzij ze allebei met dezelfde sleutel opengaan. Dan heb je geen tweede slot, je hebt hetzelfde slot dat je twee keer hebt betaald.

Dat is precies wat er gebeurt als je een AI de output van een andere AI laat controleren. De belofte klinkt geruststellend: de coding agent schrijft de code, een tweede AI reviewt hem op fouten en beveiligingsgaten, en jij hebt er een controlelaag bij. “Laat de AI het checken.” Voor een klein team zonder eigen securityspecialist voelt dat als een uitkomst.

Maar een tweede taalmodel dat op exact dezelfde manier te misleiden is als het eerste, is geen onafhankelijke controle. Het is dezelfde blinde vlek, twee keer. En de afgelopen weken hebben beveiligingsonderzoekers dat griezelig concreet gemaakt.

Een controle is pas een controle als hij onafhankelijk kan falen van wat hij controleert. Twee AI-lagen die allebei taalmodellen zijn, allebei externe tekst binnenhalen en allebei gevoelig zijn voor promptinjectie, delen één zwakte. Ze tellen niet als twee oordelen, ze tellen als één oordeel dat je twee keer uitvoert. Onafhankelijkheid, niet intelligentie, maakt een review een review.

Dezelfde deur, twee keer

Begin juli liet het Amerikaanse AI Now Institute met een proof-of-concept zien dat je een codeeragent tijdens een beveiligingsreview zelf een kwaadaardig programma op je host laat uitvoeren, zonder dat er nog om toestemming wordt gevraagd. De onderzoekers verstopten de aanval in een gewone open-source bibliotheek: een README met de onschuldig ogende instructie om eerst een controlescript te draaien, en een script dat naar bekende securitytools verwees maar in werkelijkheid een payload startte.

De gebruiker hoeft maar één ding te vragen: doe een security-review op deze map. De agent leest de README, concludeert dat het script bij de taak hoort en voert het uit. De tool die je juist op onbekende, externe code richt, pikt daar de aanval uit op en draait hem met jouw rechten.

Het venijn zit in wat dit structureel maakt. Dezelfde payload werkte ongewijzigd op Claude Sonnet 4.6, Sonnet 5, Opus 4.8 en GPT-5.5. Dit is geen fout in één versie die je met een update dichttimmert. Promptinjectie is geen defect van de coder, het is een eigenschap van elk taalmodel dat tekst van buiten binnenhaalt en niet betrouwbaar onderscheidt tussen “dit is data om naar te kijken” en “dit is een opdracht om uit te voeren”. En je reviewer is óók zo’n taalmodel, dat óók tekst van buiten binnenhaalt: dezelfde repository, dezelfde README, dezelfde regels. Een tweede AI met dezelfde architectuur is dus geen tweede oordeel. Het is de eerste blinde vlek, verdubbeld.

Dat past in een grotere verschuiving: het aanvalspad is verhuisd van je eigen code naar het gereedschap dat je vertrouwt en automatisch binnenhaalt. De review-agent is intussen onderdeel van dat gereedschap.

De blinde vlek zit in wat de laag niet ziet

Onafhankelijkheid gaat niet over “een ander model”, maar over “een andere manier van kijken”. Een aanval die onderzoekers Ghostcommit noemen laat dat scherp zien. De kwaadaardige instructie zit hier niet in de code, maar als leesbare tekst verstopt in een PNG-afbeelding die tekstgebaseerde reviewtools nooit openen. CodeRabbit sluit afbeeldingen standaard uit van de review; Cursor Bugbot gaf niets terug. De payload leest later het .env-bestand uit en schrijft je API-sleutels en wachtwoorden als een reeks getallen weg in een publieke commit.

De onderzoekers van de ASSET Research Group aan de University of Missouri-Kansas City vonden iets dat elke toolkeuze raakt: over tien testruns woog de gebruikte tool zwaarder dan het onderliggende model. Claude Code weigerde de aanval bij elke test en benoemde waarom; Cursor en Antigravity lekten de inhoud van .env onder meerdere modellen. Een duurder of slimmer model koopt je dus geen onafhankelijkheid. De vraag is niet welk model eronder zit, maar wat de laag wel en niet inspecteert.

En de reviewtool is niet eens per definitie een neutrale partij. China’s nationale kwetsbaarhedendatabase waarschuwde onlangs officieel dat Claude Code locatie- en identiteitsgegevens ongevraagd naar externe servers stuurde in een reeks versies. Of je die specifieke melding nu geopolitiek zwaar weegt of niet, het punt eronder blijft staan: “een andere AI” is niet automatisch een onafhankelijke, belangeloze controleur.

Het vangnet dat je aanneemt, hangt er vaak niet

Hier wordt de schijnzekerheid duur. Toen dezelfde onderzoekers keken hoe vaak er in de praktijk nog iemand meekijkt, bleek dat van bijna 6.500 samengevoegde pull requests in de 300 actiefste publieke repositories 73 procent de hoofdtak in ging zonder enige inhoudelijke menselijke of bot-review. “Laat de AI het checken” wordt in de praktijk vaak “niemand checkt het”.

En die AI-reviewer is geen passieve toeschouwer. Het is een bevoorrecht proces dat commando’s draait met jouw rechten, een machine-identiteit die vaak op de geleende inlog van een medewerker leunt en geprivilegieerde toegang heeft tot je host, je sleutels en je systemen. Zelfs de laatste menselijke rem is niet zeker: bij GhostApproval toonde het goedkeuringsvenster een onschuldige bestandsnaam terwijl de agent een SSH-sleutel buiten je project wegschreef. Je klikt “Ja” op iets anders dan wat er gebeurt.

Dat is het echte gevaar van een schijnbare controlelaag: hij is duurder dan geen controle, omdat je stopt met kijken. Wie gelooft dat de tweede AI het wel vangt, ontspant precies op de plek waar dat het minst kan.

Om eerlijk te zijn: twee lagen zijn soms beter dan één

Het sterkste tegenargument verdient zijn beste vorm. Gelaagde verdediging is een beproefd principe: je stapelt controles zodat wat de ene mist, de andere pakt. En een AI-reviewer vangt echt fouten die een moe mens om half zes over het hoofd ziet. Cursor beschrijft Bugbot als een verplichte controle vóór het samenvoegen voor duizenden teams, waarbij naar eigen zeggen ruim 70 procent van de meldingen wordt opgelost voordat de code de hoofdtak haalt. En Claude Code weigerde Ghostcommit wél. Dus soms werkt het. Dat is eerlijk.

Alleen: gelaagde verdediging telt alleen als de lagen onafhankelijk falen. Twee lagen met een gecorreleerde zwakte, allebei taalmodellen, allebei gevoelig voor dezelfde promptinjectie, allebei blind voor wat er in een binair bestand staat, zijn geen twee lagen. Ze zijn één laag met een dubbele factuur. Dat Claude Code de ene aanval weigerde maar de andere uitvoerde, bewijst mijn punt eerder dan dat het het weerlegt: de bescherming is niet onafhankelijk en niet voorspelbaar, ze wisselt per tool en per aanval.

Een AI-reviewer is een prima extra paar ogen. Hij is alleen geen controlelaag. Het verschil zit in wat een echte controle moet kunnen: iets zien wat de gecontroleerde principieel niet ziet. De multimodale verdediger die de Ghostcommit-onderzoekers er zelf bij bouwden, een aparte laag die de plaatjes wél doorleest, stopte 79 van de 80 onbekende aanvallen zonder één vals alarm bij dertig legitieme pull requests. Die telt wél als tweede laag, juist omdat hij anders kijkt.

Onafhankelijkheid, niet intelligentie

Terug naar de twee sloten. Het probleem was nooit dat het tweede slot te goedkoop was of te dom. Het probleem was de gedeelde sleutel. Een tweede AI die je code beoordeelt met hetzelfde soort brein en dezelfde blinde vlekken als de AI die de code schreef, is dat gedeelde slot.

Behandel de AI-reviewer dus als wat hij is: een snelle, waardevolle extra bril, geen onafhankelijke controle. Zet er iets naast dat principieel anders kijkt. Voor alles wat je secrets of je productieomgeving raakt, is dat een mens op de vertrouwensgrens of een tool-laag die buiten het model om werkt en de binaire invoer wél inspecteert. Draai onbekende code in een wegwerp-sandbox zonder je productie-sleutels binnen handbereik. En wees het meest wantrouwig precies op het moment dat de review “schoon” terugkomt, want dat is wanneer een aanvaller wilde dat je zou ontspannen.

Twee keer dezelfde blinde vlek is geen tweede paar ogen. Het is een grotere blinde vlek, met meer zelfvertrouwen.

Veelgestelde vragen

Alisina Nawabi
Geschreven doorAlisina Nawabi

AI Product Engineer & Solutions Architect

AI-agents met een echte controle

Ik denk mee, ontwerp en bouw je AI-agents end-to-end, met een onafhankelijke controlelaag eromheen in plaats van een model dat zichzelf beoordeelt. Van eerste opzet tot een opstelling die je in productie durft te vertrouwen.

Meer informatie

Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.

Gerelateerde artikelen

Ghostcommit verstopt prompt-injectie in een PNG en laat AI-codeeragents .env-secrets lekken
Nieuws
5 min

11 jul 14:29

Ghostcommit verstopt prompt-injectie in een PNG en laat AI-codeeragents .env-secrets lekken

Onderzoekers van de University of Missouri-Kansas City verstoppen met Ghostcommit een kwaadaardige instructie in een PNG die AI-codereviewtools nooit openen. Een coding agent volgt de aanwijzing later en lekt de geheime sleutels uit je .env-bestand naar een publieke commit.

'Friendly Fire' laat Claude Code en Codex kwaadaardige code draaien bij een beveiligingsreview
Nieuws
4

10 jul 14:35

'Friendly Fire' laat Claude Code en Codex kwaadaardige code draaien bij een beveiligingsreview

Het AI Now Institute toont met 'Friendly Fire' hoe Claude Code en Codex tijdens een beveiligingsreview via een gemanipuleerde README zelf een kwaadaardig programma op de host uitvoeren, zonder om toestemming te vragen.

Microsoft lanceert eigen AI-modellen, en waarom dat goed nieuws is voor het MKB
Nieuws
5 min

4 jun 11:44

Microsoft lanceert eigen AI-modellen, en waarom dat goed nieuws is voor het MKB

Microsoft onthulde op Build 2026 zeven eigen MAI-modellen om minder afhankelijk te worden van OpenAI, met de claim tot tien keer goedkoper te zijn. We duiden het feit en wat het concreet betekent voor jouw bedrijf.

Wie zet de knop om: waarom je AI-rekening stijgt zonder dat jij iets deed
Inzicht
7 min

13 jul 09:00

Wie zet de knop om: waarom je AI-rekening stijgt zonder dat jij iets deed

Je kunt je AI-verbruik tot op de token begroten en toch een hogere rekening krijgen die je niet zag aankomen. De grootste knoppen op je AI-kosten zitten aan de leverancierskant, niet bij jou.

Hoe AI nadenkt: wat een redeneermodel echt doet
Uitgelegd
8 min

11 jul 22:46

Hoe AI nadenkt: wat een redeneermodel echt doet

Nee, een redeneermodel denkt niet zoals jij. Het gebruikt hetzelfde volgende-token-trucje, maar schrijft eerst een kladblok vol tussenstappen voordat het antwoordt. Reken één puzzel mee en je voelt meteen het verschil.

Multimodale AI: hoe een model beeld, document en geluid leest
Uitgelegd
7 min

11 jul 22:19

Multimodale AI: hoe een model beeld, document en geluid leest

Een AI leest een foto niet via een los OCR-programma en kijkt er niet met een oog naar. Ze knipt het beeld in patches, maakt er tokens van, en voorspelt gewoon het volgende token. Zie hoe dat werkt en wat het kost.