Op 10 mei dacht ergens op het internet een machine hardop.
Midden in een actieve inbraak lekte er een Chineestalig commentaar regelrecht de commandostroom in: 看还能做什么. "Eens kijken wat we nog meer kunnen doen." Het dook op vanaf zes verschillende IP's, met tussenpozen van minder dan een seconde. Zo snel typt geen mens. En geen mens typt dat tegelijk vanaf zes adressen. Iets redeneerde over zijn volgende zet en dacht daarbij hardop, en dat iets was geen mens.
Het threat research-team van Sysdig heeft de hele aanval ontleed. Wat ze vonden is de eerste publiek bevestigde echte inbraak waarbij een LLM-agent de aanvaller was. Geen assistent. Geen co-piloot die een hacker sneller laat werken. Het ding zat zelf achter het stuur.
Wat er echt gebeurde
De stappen zijn op zichzelf bijna saai. Dat is nou juist het punt.
Het begon met CVE-2026-39987, een remote code execution-lek in marimo-notebooks die aan het internet hingen. Eén WebSocket-verzoek naar het terminal-endpoint, en de agent had een voet tussen de deur. Vanaf daar:
- 18:24: las hij de AWS-credentials uit de environment-bestanden op de host.
- 19:26: gebruikte hij die sleutels om een SSH-private key uit AWS Secrets Manager te trekken.
- 19:30: logde hij met die key in op een bastion-server.
- 19:32: dumpte hij een PostgreSQL-database, schema en inhoud, binnen twee minuten.
Van eerste toegang tot volledige exfiltratie binnen een uur. In dat hele uur typte geen mens één commando.
En hij improviseerde. De agent probeerde een tabel credential te dumpen die helemaal niet in het verwachte schema bestaat. Hij gokte, in real time, tegen een doelwit dat hij nog nooit had gezien. Dat doet een draaiboek niet. Dat doet een script niet. Dat doet alleen iets dat redeneert.
Even rustig blijven
Dit is het stuk dat de hijgerige berichtgeving overslaat: hij kwam binnen via een ongepatchte CVE en credentials die in platte tekst klaarlagen.
Voor het marimo-lek bestond een patch. De AWS-sleutels stonden in een .env-bestand op een machine die ze niet nodig had. De saaie basis, snel patchen, least privilege, credentialhygiëne, runtime-detectie, had dit bij elk van die vier stappen in de kiem kunnen smoren. Er was geen zeroday. Er was geen magie. Een agent liep door deuren die wij open hadden laten staan, dezelfde deuren waar een verveelde puber doorheen had gekund.
Dus nee, de robots zijn niet onstuitbaar. Het weinig sexy advies werkt nog steeds.
Maar precies daarom doet de rest ertoe.
Het dreigingsmodel ging een grens over
Twee jaar lang ging het verhaal over AI en security uit van een mens aan de knoppen. Aanvallers gebruiken AI om scherpere phishingmails te schrijven. Om sneller malware te genereren. Om een supportbot over te halen tot een wachtwoordreset. In al die gevallen zit er een mens aan het stuur en is de AI gereedschap in zijn handen.
Dit is anders. Hier is de AI de aanvaller. Hij kiest de volgende pivot, leest zijn eigen output, speelt in op wat hij tegenkomt. De mens, als die er überhaupt nog is, geeft een doel mee en loopt weg.
En het schaalt. Drie weken later lieten onderzoekers van het CleverHans Lab van de University of Toronto op Infosecurity Europe een worm zien, gebouwd op een gratis, publiek beschikbaar model, die 73,8% van een netwerk van 33 machines overnam. Hij droeg geen vaste exploits mee. Hij redeneerde ter plekke over elke host, vond gemiddeld 31 kwetsbaarheden per run en, dit is het verontrustende deel, misbruikte drie lekken die pas ná de trainingscutoff van het model waren bekendgemaakt. Hij verzon aanvallen voor bugs waarvan hij nooit had gehoord.
Een menselijke aanvaller die dat kan is zeldzaam en duur. Deze is gratis en kopieert zichzelf.
Waarom je verdediging een mens veronderstelt
De meeste securitytools, en de meeste incident response, gaan er stilzwijgend van uit dat er een mens aan de andere kant zit. Een analist die op menselijke snelheid werkt. Die menselijke fouten maakt. Die moet slapen.
Kijk naar hoe Sysdig deze aanval daadwerkelijk betrapte. Wat de aanval verraadde, was geen vernuft, maar vorm:
- Snelheid en parallellisme. De agent deed 12 API-aanroepen verdeeld over 11 verschillende Cloudflare Workers-IP's in 22 seconden, en spreidde zijn uitgaande verkeer expres om detectie per bron-IP te omzeilen. Zo snel en over zoveel adressen tegelijk werkt geen mens.
- Machine-geoptimaliseerde commando's. Elk commando was opgemaakt voor automatische verwerking:
echo '---'als scheiding,head -30om de output te begrenzen, pagers uit,2>/dev/nullom ruis te onderdrukken. Zo werkt geen mens achter een terminal. Zo schrijf je commando's als een parser ze moet lezen, niet een mens. - Hardop denken. Het planningscommentaar dat binnen een seconde opdook vanaf zes IP's.
- Context-bewuste overdrachten. Hij pakte een wachtwoord uit
.pgpass, een secret-ID uit de ene aanroep voor de volgende, een home-directory uit eerdere verkenning. Hij las zijn eigen output en ging door, geen pauze, geen knip-en-plak, geen mens in de lus.
Stuk voor stuk wijzen ze op tempo en machinematig gedrag, niet op vaardigheid. Het voordeel van de verdediger was nooit dat aanvallen moeilijk waren. Het was dat ze traag waren, stap voor stap gingen en rust nodig hadden. Dat voordeel is weg.
Wat je echt moet doen
Niets hiervan is exotisch. Alleen de nadruk verschuift.
- Patchvertraging is nu exploitatievertraging. Als ontdekken en misbruiken geautomatiseerd en ogenblikkelijk gaan, dan draait alles om het gat tussen het verschijnen van een CVE en het uitrollen van je patch. De Toronto-worm misbruikte bugs van ná de cutoff. Ga ervan uit dat de aanvaller een lek kent op het moment dat jij het kent.
- Detecteer op interne machines, niet alleen aan de rand. Deze hele keten speelde zich lateraal af, ná de eerste voet tussen de deur. Het advies van Sysdig zelf: runtime-detectie op alle machines, niet alleen op wat aan het internet hangt. De interessante beweging zit binnen.
- Credentialhygiëne is de echte maatregel. Achter elke pivot zat een credential die de agent niet had moeten kunnen bereiken. Sleutels in platte tekst in env-bestanden, een SSH-key op één API-aanroep afstand. Roteer, perk rechten in, en laat geen sleutels meer in de deuren steken.
- Stem detectie af op vorm, niet op signatures. Acties binnen een seconde, uitwaaiering over IP's, machine-geformatteerde commando's, geen menselijke pauzes tussen de stappen. Dat zijn de nieuwe aanwijzingen. Richt je daarop in.
De geruststellende versie van dit verhaal is dat een agent nog steeds een ingang nodig heeft, en dat wij nog steeds weten hoe we de deuren dichtdoen. Dat klopt. Blijf ze dichtdoen.
De ongemakkelijke versie is dat we het ons jarenlang konden permitteren ze langzaam dicht te doen, omdat het ding dat erdoor probeerde te komen ook langzaam was. Het porde, wachtte, kwam de dag erna terug, werd moe, werd slordig. Ons hele gevoel van "we merken het wel op tijd" hebben we op dat ritme gebouwd.
Er zit niemand meer achter het toetsenbord. En wat ervoor in de plaats is gekomen, wordt niet moe, verveelt zich niet, en wacht niet tot morgen.