Microsoft heeft op 18 augustus drie kwetsbaarheden in Copilot gedicht waarmee een klik op een link e-mails, wachtwoorden en agenda-afspraken naar een server van een aanvaller stuurde, meldt Varonis Threat Labs.
Het gaat om Copilot Personal, de consumentenversie, en juist daar zit de kern voor een Nederlandse werkgever. Medewerkers koppelen die assistent zelf aan hun Gmail, Google Drive en agenda, zonder dat een beheerder daar zicht op heeft. Op diezelfde 18 augustus schrapt Microsoft Podcasts, Group Chat en Deep Research in de overgang naar een gedeelde Copilot-app voor privé- en werkaccounts. Welke connectoren je toestaat, wat er in het geheugen van de assistent mag blijven staan en hoe je omgaat met links die een AI-tool openen, wordt daarmee beleid en niet langer een keuze die iedere medewerker los maakt.
Copilot beschreef zijn eigen achterdeur
De onderzoekers hoefden niets te reverse-engineeren. Ze vroegen het de assistent. Varonis wilde een URL die Copilot opent met de prompt al ingevuld, zodat de gebruiker alleen nog op Enter hoefde te drukken. Copilot antwoordde dat een prompt niet vanzelf afgaat, want gebruikersintentie is vereist. Daarop bleven de onderzoekers doorvragen: waarom precies niet, welke URL-structuren en deep links spelen mee, wat gebeurt er als een pagina laadt met tekst al in het invoerveld.
Elke weigering kwam met een technische onderbouwing, en die onderbouwing was de aanwijzing. Varonis noemt de techniek meta-hacking: je exploiteert het model niet, je praat het zover dat het meewerkt. Halverwege een weigering noemde Copilot een ongedocumenteerde URL-parameter, inclusief het gedrag ervan in het verleden en alle beschermingen die Microsoft had ingebouwd om hem uit te zetten. Toen de onderzoekers die parameter testten precies zoals Copilot hem had beschreven, werkte hij gewoon.
De aanvals-URL ziet er zo uit: https://copilot.microsoft.com/?q=<prompt>&autorun=1. De bekende parameter ?q= vult alleen het invoerveld, waarna de gebruiker nog zelf moet bevestigen. Pas autorun=1 zorgt dat de prompt bij het laden van de pagina afgaat, zonder klik, zonder bevestiging en zonder zichtbaar teken op het scherm. Beide parameters moeten aanwezig zijn.

Wat er in de tests naar buiten ging
Zodra de prompt draait, heeft hij dezelfde rechten als een opdracht die de gebruiker zelf intypt. In de tests van Varonis leverde dat volledige berichtinhoud uit een gekoppeld Gmail-account op, met onderwerpregels en afzendergegevens, plus agenda-afspraken met titels, deelnemers en locaties, bestandsnamen uit Google Drive, de volledige chatgeschiedenis van Copilot en alles wat in het permanente geheugen stond. Bij een zoekopdracht naar e-mails met het woord password gaf de assistent een wachtwoord in leesbare tekst terug.
Het wegsluizen gebeurt via een functie die Copilot toch al heeft: een webpagina ophalen en samenvatten. De verzamelde gegevens gaan base64-gecodeerd in het pad van een URL, Copilot doet daar een gewone GET-aanroep naartoe en de server van de aanvaller logt dat pad. Voor een netwerkmonitor is dat verkeer niet te onderscheiden van elke andere pagina die Copilot ophaalt. Geen afwijkende headers, geen vreemde poort, geen patroon om op te alarmeren. Die codering helpt ook om filters te omzeilen die uitgaand verkeer scannen op wachtwoorden en API-sleutels. De keten loopt door tot het einde, ook als het slachtoffer het Copilot-tabblad meteen sluit.

Het vergiftigde geheugen blijft staan
De derde kwetsbaarheid is de hardnekkigste, want daarvoor is geen tweede klik nodig. Vraag je Copilot een webpagina samen te vatten, dan haalt hij de volledige HTML op en verwerkt die als tekst. Instructies die in die pagina verstopt zitten, in wit lettertype van een pixel hoog, in een HTML-commentaar of in een metaveld, leest het model als opdrachten en voert het uit. Een van die opdrachten kan zijn: schrijf dit in het permanente geheugen van deze gebruiker.
Dat geheugen kent geen vervaldatum. Het reset niet tussen sessies, wist niet bij uitloggen en overleeft volgens Varonis een wachtwoordwijziging, het intrekken van sessies en zelfs het opnieuw inschrijven van het apparaat. Precies de stappen dus die een team bij een incident zet. Er is geen proces, bestand, netwerkverbinding of logregel die de schrijfactie verraadt. Het enige spoor staat in het geheugenscherm van Copilot, dat de meeste gebruikers nooit openen omdat ze niet weten dat het bestaat.
Wat een aanvaller daarmee kan, gaat verder dan meelezen. Vergiftigd geheugen kan uitvoer doorsturen, informatie wegfilteren, antwoorden naar een gewenst verhaal buigen of een actie uitvoeren zodra een bepaalde voorwaarde optreedt. In een van de voorbeelden liet Varonis Copilot vertellen dat een CVE geen risico vormde.
De reparatie kwam in twee stappen
Varonis meldde de keten in december 2025 bij Microsoft. Ars Technica schrijft dat Microsoft in februari stilletjes de mogelijkheid schrapte om via ?q= tekst in het invoerveld te injecteren, met als bijeffect dat browserintegraties van derden de parameter niet meer konden gebruiken waarvoor hij bedoeld was. De bredere fix volgde pas op 18 augustus, ruim acht maanden na de melding.
Varonis zegt geen aanwijzingen te hebben dat de aanval in het wild is gebruikt en bedankt Microsoft voor de samenwerking aan de fix. Microsoft zou dinsdag ook een CVE-nummer toekennen, maar beantwoordde vragen over de fix en dat nummer niet voor publicatie.
Wat organisaties nu kunnen regelen
Het advies van Varonis aan securityteams is niet om Copilot uit te zetten, maar om de aannames eronder te herzien. Vier dingen staan bovenaan.
- Inventariseer de connectoren. Loop na welke apps aan Copilot hangen en of elke koppeling nog nodig is. Minder koppelingen betekent een kleinere straal waarbinnen een klik schade doet.
- Behandel de assistent als een bevoorrechte insider. Dezelfde toegangsreviews en gedragsdetectie die gelden voor een medewerker met brede leesrechten.
- Kijk naar links die AI-tools openen. De keten begint bij een klik. Een URL die een assistent opent met een prompt erin verdient extra argwaan, ook als het domein klopt.
- Test je monitoring. Ziet je huidige tooling een afwijkend datatoegangspatroon dat vanuit Copilot komt? Volgens Varonis zit daar bij de meeste organisaties een blinde vlek.
Hetzelfde patroon, nu voor de derde keer in drie weken
CoSnitch is de derde Copilot-fout die Varonis dit jaar publiceert, na Reprompt en SearchLeak. Het is ook niet het enige onderzoek dat de afgelopen weken bij deze assistent uitkwam. Rubrik demonstreerde op Black Hat hoe een kwaadaardig Word-document een shell opent in Microsoft 365 Copilot en via de Azure-containerruntime escaleert naar root op de Kubernetes-node, en onderzoeker Håkon Måløy bouwde een AI-worm die zichzelf via Copilot door Word-documenten verspreidt. Dat zijn andere onderzoeken met andere routes: geen van beide raakt de autorun-parameter of het permanente geheugen.
Wat ze delen is de vorm. Bij Atlassian ging het om de URL-parameter rovoChatPrompt, waarmee een klik de AI-assistent Rovo data uit Jira en Confluence liet uitlezen. Hier is het autorun=1. Steeds is het geen kapotte code, maar een assistent die precies doet waarvoor hij gebouwd is, aangestuurd door iemand anders dan de gebruiker.
De patch van dinsdag sluit een parameter. Het ontwerp eronder blijft: een model dat tekst uit een e-mail, een webpagina of een URL niet kan onderscheiden van een opdracht van de gebruiker. Zolang die grens ontbreekt, is elke connector die je aanzet een uitbreiding van wat een enkele klik kan bereiken.
Veelgestelde vragen
AI koppelen zonder blinde vlekken
Ik denk met je mee over welke koppelingen een AI-assistent echt nodig heeft, ontwerp de afspraken eromheen en bouw en automatiseer het vervolgens ook, self-hosted waar dat kan. Van het eerste gesprek tot een opzet waarvan je precies weet wie bij welke data kan.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
