Agentbeveiliging
Agents lezen tekst van onbekenden en handelen vervolgens met je inloggegevens. Op deze pagina vind je de basisregel, beide OWASP-lijsten van 2026, de incidenten tot nu toe en de maatregelen die deze hadden kunnen voorkomen.
De dodelijke trifecta
- Toegang tot privégegevensE-mail, repositories, databases, bestanden en alles wat achter je inloggegevens zit.
- Blootstelling aan niet-vertrouwde contentWebpagina's, issues, supporttickets, inkomende e-mail en toolbeschrijvingen: alle tekst die een aanvaller kan schrijven.
- Extern kunnen communicerenE-mail versturen, pull requests openen, URL's ophalen of externe afbeeldingen weergeven. Simon Willison benoemde deze combinatie van drie onderdelen in juni 2025.
Als één agent alle drie heeft, ga er dan van uit dat prompt injection ertoe kan leiden dat die je gegevens aan een aanvaller doorspeelt. Vertrouw er niet op dat het model weigert; haal minstens één onderdeel weg bij elke agent en sessie.
Beveiligingschecklist
22 controles voor inputs, tools, runtime, MCP, CI en beheer. Vink ze af en exporteer het resultaat als Markdown-bestand.
Incidentenlogboek
Voor elk openbaar incident rond agentbeveiliging sinds april 2025: wat er gebeurde, waarom de aanval slaagde en wat je in je eigen setup kunt aanpassen.
Recente incidenten
- Sessiekaping en toegang tot taken van andere sessies in MCP Python SDK
- Automatische goedkeuring van Claude Code WebFetch maakte data-exfiltratie via huggingface.co mogelijk
- Comment and Control: PR-tekst steelt secrets van CI-agents
- MCP TypeScript SDK lekte responses tussen clients
- ClawHavoc: honderden kwaadaardige ClawHub-skills verspreiden AMOS
OWASP Top 10 voor agentic applicaties 2026
Het OWASP GenAI Security Project publiceerde deze lijst op 9 december 2025. De lijst behandelt risico's die ontstaan zodra een model plannen maakt, geheugen bijhoudt, tools aanroept en samenwerkt met andere agents.
ASI01Agentdoel kapenEen aanvaller verandert wat de agent probeert te bereiken, meestal via instructies die verborgen zitten in inhoud die de agent leest. De agent streeft vervolgens het doel van de aanvaller na met de tools en machtigingen van de gebruiker.
ASI02Misbruik en uitbuiting van toolsDe agent gebruikt legitieme tools op schadelijke manieren, bijvoorbeeld om records te verwijderen, berichten te versturen of aanroepen aan elkaar te koppelen. Dat kan komen doordat de agent is gemanipuleerd of tools heeft met ruimere bevoegdheden dan de taak vereist.
ASI03Misbruik van identiteit en bevoegdhedenAgents handelen met inloggegevens, gedelegeerde tokens en overgenomen machtigingen. Aanvallers maken misbruik van die identiteiten of de lacunes ertussen om hun bevoegdheden uit te breiden of zich als iemand anders voor te doen.
ASI04Kwetsbaarheden in de agentische toeleveringsketenTools, MCP-servers, skills, plugins, modellen en prompts die tijdens het bouwen of uitvoeren worden geladen, kunnen kwaadaardig of gecompromitteerd zijn. Omdat agents er veel dynamisch laden, bereikt één schadelijk component elke sessie waarin het wordt gebruikt.
ASI05Onverwachte code-uitvoering (RCE)Agents die code schrijven en uitvoeren, of modeluitvoer doorgeven aan shells en interpreters, kunnen ertoe worden aangezet om op de host door de aanvaller gekozen opdrachten uit te voeren.
ASI06Vergiftiging van geheugen en contextAanvallers plaatsen onjuiste feiten of instructies in het geheugen van een agent, opgehaalde documenten of opgeslagen context. De vergiftiging blijft bestaan en beïnvloedt latere sessies, lang nadat de oorspronkelijke input is verdwenen.
ASI07Onveilige communicatie tussen agentsBerichten tussen agents worden verstuurd zonder de juiste authenticatie, integriteitscontroles of validatie. Daardoor kunnen ze worden vervalst, opnieuw afgespeeld of aangepast om de ontvangende agent te misleiden.
ASI08KetenstoringenEén fout, zoals vergiftigde input, een verkeerd toolresultaat of een gecompromitteerde agent, verspreidt zich via verbonden agents en geautomatiseerde stappen sneller dan mensen kunnen ingrijpen.
ASI09Misbruik van vertrouwen tussen mens en agentAgents klinken zelfverzekerd en behulpzaam, waardoor mensen geneigd zijn hun voorstellen goed te keuren. Aanvallers maken misbruik van dat vertrouwen om iemand schadelijke acties te laten bevestigen of informatie te laten prijsgeven.
ASI10Onbetrouwbare agentsEen gecompromitteerde agent of een agent die is afgeweken van zijn beoogde gedrag, blijft zelfstandig handelen buiten de gegeven scope en het bijbehorende toezicht.
OWASP Top 10 voor LLM-applicaties 2026
Deze editie verscheen op 4 augustus 2026 en vervangt de lijst van 2025. Excessive Agency steeg van de zesde naar de derde plaats en System Prompt Leakage kreeg de nieuwe naam Hidden Context Exposure.
LLM01Prompt injectionInput verandert het gedrag van het model op manieren die de ontwikkelaar niet heeft bedoeld. Die input kan rechtstreeks van de gebruiker komen of indirect uit documenten, webpagina's en toolresultaten die het model leest.
LLM02Blootstelling van gevoelige informatieHet model of de applicatie onthult in de output persoonsgegevens, inloggegevens, bedrijfsgeheimen of ander vertrouwelijk materiaal uit trainingsdata, context of gekoppelde systemen.
LLM03Overmatige autonomieDe applicatie geeft het model meer functies, rechten of autonomie dan nodig is voor de taak, waardoor een gemanipuleerde of onjuiste output echte schade veroorzaakt. Deze categorie steeg van de zesde plaats in 2025 naar de derde plaats in 2026.
LLM04ToeleveringsketenModellen, datasets, adapters, packages en plugins van derden kunnen zijn gemanipuleerd of kwetsbaar zijn. Ze brengen dat risico mee naar je applicatie.
LLM05Vergiftiging van data en modellenAanvallers manipuleren pre-training-, fine-tuning- of embeddingdata om backdoors, vooroordelen of onjuist gedrag te introduceren dat pas later in productie zichtbaar wordt.
LLM06Onbegrensd verbruikZonder limieten voor requests, inputgrootte of rekenkracht kunnen aanvallers je kosten opdrijven, resources uitputten of via grote aantallen queries een model kopiëren.
LLM07DesinformatieHet model produceert onjuiste of misleidende output die geloofwaardig lijkt, waarna gebruikers of downstreamsystemen er zonder controle naar handelen.
LLM08Blootstelling van verborgen contextHeette voorheen System Prompt Leakage. Systeemprompts, verborgen instructies en andere context die niet voor de gebruiker bedoeld is, kunnen worden achterhaald. Daardoor komen de regels, logica of geheimen die erin zijn opgenomen bloot te liggen.
LLM09Zwakheden in vectoren en embeddingsFouten in de manier waarop embeddings worden gegenereerd, opgeslagen en opgehaald, stellen aanvallers in staat content te injecteren, data tussen tenants te lekken of brontekst te reconstrueren. Vooral RAG-systemen lopen hierdoor risico.
LLM10Onjuiste verwerking van outputModeloutput bereikt browsers, shells, databases of andere componenten zonder validatie of encoding. Dat maakt XSS, SQL-injectie, code-uitvoering en data-exfiltratie mogelijk.
Verdedigingsmaatregelen
Vijftien gedocumenteerde verdedigingsmaatregelen, elk met een link naar de bron. Combineer er meerdere, want geen enkele maatregel houdt alle aanvallen zelfstandig tegen.
Doorbreek de dodelijke trifecta
De regel van Simon Willison: een agent die privédata kan lezen, onbetrouwbare content te zien krijgt en data naar buiten kan sturen, kan door elke tekst die hij leest tegen je worden ingezet. Schakel voor elke agent of sessie minstens één van deze drie mogelijkheden uit. Geef de agent die openbare issues triageert bijvoorbeeld geen geheimen, en geef de agent met toegang tot geheimen geen kanaal om data naar buiten te sturen.
Beperk de agent na onbetrouwbare input
Onderzoek naar ontwerppatronen voor agentbeveiliging komt neer op één regel: zodra een agent niet-vertrouwde invoer heeft verwerkt, mag die invoer geen ingrijpende acties kunnen starten. De patronen zijn onder meer action-selector, plan-then-execute, dual LLM en contextminimalisatie. Kies per workflow één patroon, bijvoorbeeld door het plan vast te leggen voordat de agent niet-vertrouwde gegevens leest.
Volg de gegevensstroom met CaMeL
CaMeL splitst de agent in tweeën: een planner met privileges schrijft code op basis van het verzoek van de gebruiker, terwijl een afgeschermd model niet-vertrouwde gegevens verwerkt. Waarden van de afgeschermde kant krijgen capability-tags. Beleidsregels controleren die tags voordat een tool wordt uitgevoerd. In het artikel loste CaMeL 77% van de AgentDojo-taken op met aantoonbare beveiliging, tegenover 84% voor een agent zonder verdediging.
Gebruik inloggegevens met minimale rechten
Geef agents standaard alleen-lezen toegang die beperkt is tot het project. Gebruik nooit een admin- of service_role-sleutel: die omzeilt in Supabase de beveiliging op rijniveau. Beperk CI- en repositorytokens tot de ene taak waarvoor ze nodig zijn. Het incident met Amazon Q Developer bleek terug te voeren op een GitHub-token met te ruime rechten in CodeBuild.
Vraag goedkeuring voor ingrijpende acties
Laat iemand toolaanroepen bevestigen die gegevens schrijven of verwijderen, berichten versturen of geld uitgeven. Weiger standaard als niemand reageert. Supabase raadt handmatige goedkeuring van MCP-toolaanroepen aan. Stel in OpenClaw tools.exec.ask in op always en laat askFallback op deny staan. Toon alle argumenten, zodat de beoordelaar ziet wat er daadwerkelijk wordt uitgevoerd.
Voer code en tools uit in een sandbox
Voer shellcommando's en gegenereerde code uit in een container of VM zonder inloggegevens, met alleen toegang tot de workspace. OpenClaw wordt geleverd met sandboxing uitgeschakeld en tools.exec.security ingesteld op full op gatewayhosts. Schakel sandboxing daarom in, stel exec security in op deny of allowlist, zet fs.workspaceOnly op true en laat de uitgebreide modus uitgeschakeld. Controleer het resultaat met openclaw sandbox explain.
Beperk uitgaand netwerkverkeer
Blokkeer standaard uitgaand verkeer van agents en MCP-servers en sta daarna alleen de hosts toe die ze nodig hebben. Keur fetches naar multi-tenant hosts waar iedereen kan publiceren nooit automatisch goed. Zo werd huggingface.co via CVE-2026-54316 een kanaal voor data-exfiltratie. Een mailserver hoort alleen de mail-API te kunnen bereiken, zoals postmark-mcp liet zien.
Houd control planes buiten het internet
Bind agentgateways, dashboards en debugproxies aan loopback en eis een token van minstens 24 tekens, bijvoorbeeld gegenereerd met openssl rand -hex 32. Maak er op afstand verbinding mee via een SSH-tunnel of Tailscale Serve. Gebruik Tailscale Funnel alleen met wachtwoordauthenticatie. Voer regelmatig openclaw security audit --deep uit.
Valideer de MCP-tokenaudience
De MCP-autorisatiespecificatie vereist dat een server toegangstokens weigert die niet voor die server zijn uitgegeven. De specificatie verbiedt ook om de token van een client door te sturen naar een upstream-API. Clients sturen RFC 8707-resource-indicators mee, zodat elke token aan één server is gekoppeld. Een proxyserver heeft toestemming nodig van elke client; anders wordt die een confused deputy.
Isoleer MCP-sessies en tenants
Maak voor elke sessie een aparte server- en transportinstantie in plaats van er één met meerdere clients te delen. Koppel elke sessie en taak aan de geauthenticeerde principal die deze heeft aangemaakt en controleer die koppeling bij elk verzoek. Beide MCP SDK-beveiligingsadviezen uit 2026 kwamen voort uit gedeelde of niet-gekoppelde status.
Controleer skills, plugins en MCP-servers
Leg exacte versies vast, bekijk de diff vóór elke update en controleer scannerresultaten, zoals die van VirusTotal, en de beveiligingsauditstatus van ClawHub. Hash toolbeschrijvingen wanneer je een server goedkeurt en waarschuw als ze veranderen; zo spoor je rug pulls op. OpenClaw blokkeert standaard niets tijdens de installatie, dus stel security.installPolicy zelf in.
Bepaal wie de agent berichten kan sturen
Beperk DM-toegang tot pairing of een allowlist, vereis een vermelding voordat de agent in groepschats handelt en stel session.dmScope in op per-channel-peer, zodat afzenders nooit context delen. Iedereen die de agent berichten kan sturen, kan proberen instructies te geven. De lijst met afzenders hoort dus bij je aanvalsoppervlak.
Houd secrets buiten niet-vertrouwde CI-runs
Voer geen agent met repositorysecrets uit in workflows die buitenstaanders via een pull request, issue of commentaar kunnen starten. Behandel titels, beschrijvingen en commentaren uit die events als kwaadwillig. Als een stap echt secrets nodig heeft, voer die dan pas uit nadat een maintainer de run heeft goedgekeurd.
Behandel modeluitvoer als niet-vertrouwd
Escape of saniteer modeluitvoer voordat je die weergeeft. Geef de uitvoer nooit ongecontroleerd door aan een shell, SQL-query of browser. Blokkeer het automatisch laden van Markdown-afbeeldingen en links naar externe domeinen en stel een strikt Content Security Policy in. EchoLeak verplaatste gegevens via URL's die automatisch werden geladen.
Controleer agentsignaturen en autoriseer daarna
Als je wilt vaststellen welke agent je site of API aanroept, controleer dan de Web Bot Auth-signatuur aan de hand van de sleutels die de operator publiceert op /.well-known/http-message-signatures-directory. De ChatGPT-agent ondertekent met Signature-Agent https://chatgpt.com. Een geldige signatuur vertelt je wie de agent beheert, niet welke gebruiker de aanvraag heeft gedaan of wat die gebruiker mag doen. Autoriseer daarom elk verzoek afzonderlijk.
Vragen over agentbeveiliging
Wat is prompt injection bij AI-agents?
Prompt injection is tekst die het model als instructies behandelt, hoewel de tekst als data is binnengekomen, bijvoorbeeld op een webpagina, in een e-mail of in een toolbeschrijving. In een agent kunnen zulke instructies toolaanroepen activeren die met jouw inloggegevens worden uitgevoerd. OWASP vermeldt dit als LLM01:2026; Agent Goal Hijack (ASI01) beschrijft de agentische variant.
Wat is de dodelijke trifecta voor AI-agents?
Simon Willison gebruikt deze term voor een agent die toegang tot privégegevens, blootstelling aan niet-vertrouwde inhoud en een manier om extern te communiceren combineert. Als alle drie aanwezig zijn, kan prompt injection je gegevens uitlezen en versturen. Het MCP-tokenlek bij Supabase in 2025 is een schoolvoorbeeld.
Hoe beveilig ik een MCP-server?
Wijs access tokens af die niet voor jouw server zijn uitgegeven en geef het token van een client nooit door aan een upstream-API. Maak per sessie één server- en transportinstantie en koppel sessies en taken aan de geauthenticeerde gebruiker. Gebruik de TypeScript SDK versie 1.26.0 of hoger en de Python SDK versie 1.27.2 of hoger; die verhelpen een responselek tussen clients en het kapen van sessies.
Kan een betere system prompt prompt injection voorkomen?
Vertrouw daar niet op. Onderzoek naar ontwerppatronen voor agents stelt dat een agent, zodra die niet-vertrouwde input heeft verwerkt, zo moet worden beperkt dat die input geen ingrijpende acties kan activeren. CaMeL, dat dit afdwingt met capability-tracking, loste 77% van de AgentDojo-taken op met aantoonbare beveiliging, tegenover 84% voor een onbeschermde agent.
Wat is het verschil tussen de OWASP LLM Top 10 en de Agentic Top 10?
De OWASP Top 10 for LLM Applications, waarvan de editie van 2026 op 4 August 2026 verscheen, behandelt risico's in elke toepassing die op een taalmodel is gebaseerd. De OWASP Top 10 for Agentic Applications, gepubliceerd op 9 December 2025, behandelt wat er verandert wanneer het model plannen maakt, tools gebruikt, geheugen bijhoudt en met andere agents communiceert. De meeste ontwikkelaars van agents hebben beide nodig.
Is het veilig om een OpenClaw-gateway aan internet bloot te stellen?
Nee. Laat gateway.bind op de standaardwaarde loopback staan en gebruik een SSH-tunnel of Tailscale Serve voor externe toegang. OpenA2A telde op 1 September 2026 192,492 blootgestelde gateways. CVE-2026-25253 liet bovendien zien dat zelfs installaties die alleen op loopback luisteren snel gepatcht moeten worden.