MCP-tool poisoning: één op de vijf agentcellen lekt een geheim
De kern
Het Model Context Protocol (MCP) verbindt agentische AI-frameworks met externe tools, maar voert daarbij aanvaller-gecontroleerde content (toolbeschrijvingen, schema-velden, responsdata) on-gevalideerd het model in. De eerste meting die niet alleen naar modelcompliantie kijkt maar ook naar echte tool-uitvoering, toont dat 22,9 procent van de 9.720 geteste agentcellen kwetsbaar is en dat 12,1 procent verifieerbaar een geheim exfiltreert. De weerstand zit op modelniveau, niet op frameworkniveau: geen van de twaalf geteste frameworks implementeert bewuste verdediging.
Wat er gemeten is
Eerdere benchmarks maten of een model meegaat met vergiftigde instructies, maar bevestigden niet of de agent de schadelijke actie daadwerkelijk uitvoert. Deze paper (arXiv:2611.03555) is de eerste cross-framework meting met echte tool-uitvoering. De opzet:
- 25-klasse root-cause taxonomie die eerdere classificaties samenvoegt tot één indeling van hoe en waarom poisoning lukt.
- De open-source tool mcpvenom drijft een 9.720-cel susceptibility-matrix aan over twaalf frameworks, achttien modellen en 45 aanvalsscenario's.
- Een dubbel oracle bevestigt exfiltratie via een canary-HTTP-ontvangst, zodat een "geslaagde aanval" verifieerbaar is in plaats van aangenomen.
De drie cijfers die ertoe doen
Van de 2.113 kwetsbare cellen (22,9 procent van het totaal):
| Uitkomst | Aandeel van kwetsbare cellen |
|---|---|
| Stuurt een aanvallers-toolcall uit | 64,9 % |
| Contacteert het aanvallers-endpoint | 23,0 % |
| Exfiltreert verifieerbaar een geheim | 12,1 % |
De sprong tussen die drie cijfers is de kern van het verhaal. Ruim zes op de tien kwetsbare cellen roepen de verkeerde tool aan, maar pas bij één op de acht wordt een geheim daadwerkelijk over de lijn gehaald. Poisoning is daarmee geen binaire kwestie van "lek of niet lek", maar een getrapte keten: eerst de verkeerde toolcall, dan contact met de aanvaller, dan exfiltratie. Elke trap is een plek waar verdediging kan ingrijpen.
Weerstand zit op modelniveau, niet op frameworkniveau
De opvallendste bevinding is waar de weerstand niet zit. De negen kern-frameworks clusteren allemaal tussen de 23 en 26 procent kwetsbaar (chi-kwadraat 3,30, p = 0,91). Er is dus geen statistisch significant verschil tussen frameworks, en een code-audit vindt geen enkele bewuste verdediging in alle twaalf frameworks. Toevallige framework-eigenschappen dempen alleen in specifieke gevallen.
De weerstand zit op modelniveau. De attack-success-rate per model loopt van 0,4 tot 49,7 procent. Claude Opus 4.8 is in slechts acht van de 530 geteste cellen kwetsbaar, terwijl het 223 expliciete weigeringen uitspreekt. Een model dat consequent weigert, is effectiever dan een framework dat niets afdwingt.
Metadata-scanning is een halve maatregel
De paper test ook de voor de hand liggende verdediging: een regex-scanner die toolbeschrijvingen op kwaadaardige patronen controleert. Die verwerpt twintig van de 45 scenario's, maar tegen een false-positive-rate van 7,2 procent. Dat is een partiële maatregel: metadata-scanning vangt een deel, maar laat een substantieel deel door, en weigert tegelijk legitieme tools te vaak.
Wat de paper niet test
De beperkingen uit de bron zelf bepalen de reikwijdte. De paper meet twaalf frameworks en achttien modellen in 45 geconstrueerde scenario's; de 22,9 procent is een meting van die specifieke matrix, niet van "alle MCP-deployments". De scenario's zijn gesynthetiseerd, niet afkomstig van echte productie-aanvallen. En de meting kijkt naar het moment van tool-aanroep en exfiltratie, niet naar wat er in de sessies daarna gebeurt (daar begint het geheugen-aanvalsoppervlak dat de MemoryDojo-paper afzonderlijk meet). Wie 22,9 procent als universeel lekpercentage overneemt, overclaimt.
Wat dit voor de Nederlandse publieke sector betekent
MCP groeit snel uit tot de standaard-interface tussen agents en tools. Wie in de publieke sector een agent aan interne systemen koppelt via MCP, neemt daarmee de drie gemeten zwaktes over, tenzij die expliciet worden gedicht.
- Behandel toolbeschrijvingen als onbetrouwbare input. MCP voert tool-metadata on-gevalideerd het model in. Een tool-registry die beschrijvingen en schema's tekent en alleen getekende, goedgekeurde tools toelaat, verkleint het aanvalsoppervlak fundamenteel.
- Verdedig per trap, niet alleen aan de grens. Omdat poisoning een getrapte keten is (toolcall, contact, exfiltratie), moet elke trap een eigen controle hebben: welke tool mag worden aangeroepen, welke endpoint mag worden gecontacteerd, en welke data mag de grens over. Uitgaande netwerktoegang voor een agent is een expliciete, geminimaliseerde uitzondering.
- Vertrouw niet op metadata-scanning alleen. De gemeten regex-scanner is een partiële controle met een meetbare false-positive-rate. Combineer scanning met uitvoeringsgrenzen, conform de Zero-Trust-logica dat een tool-aanroep pas geldig is wanneer die tegen het mandaat is getoetst.
Deze maatregelen sluiten aan op dezelfde lijn als autorisatie-drift: de grens tussen wat een agent mag lezen en wat hij mag doen, moet buiten het model liggen. BIO2-gerelateerde eisen aan logging en functiescheiding vertalen zich hier naar de vraag welke tool-aanroep, welk endpoint-contact en welke data-uitvoer door een agent überhaupt zijn toegestaan.
Zie ook
- Versleutelde skills: hoe gecodeerde instructies agents besmetten zonder detectie
- Drie zwakke plekken van LLM-agents: geheugen, autorisatie en audit
- AI-agents en Zero Trust: autonome handhaving als nieuwe grens
Bronnen
- MCP Tool Poisoning in Agentic AI Frameworks: A Cross-Framework Measurement Study, arXiv, 2 november 2026
AI & Security Intelligence
Wekelijkse nieuwsbrief met AI updates, security alerts en compliance inzichten, direct in uw inbox.
Security & AI Operating Model
Advisory met executiekracht
Van BIO2 en NIS2 tot EU AI Act, embedded in uw operating model, niet als extern project. Maandelijks opzegbaar, met assessments als bewijsvoering.