Een computermonitor met regels programmacode.
Inzicht17 juli · 21:016 min leestijd

Je AI-codeertool verzint een pakketnaam die niet bestaat, en een aanvaller bezit hem al

AI-codeertools verzinnen pakket- en repositorynamen die niet bestaan, en aanvallers registreren ze vooraf. Waarom slopsquatting geen kwaliteitsfoutje is maar een voorspelbaar aanvalskanaal, en waarom een beter model je daar niet tegen beschermt.

Geef zestien code-modellen een half miljoen programmeeropdrachten, en bijna een op de vijf pakketten die ze voorstellen bestaat niet. Ruim 205.000 verzonnen namen, netjes met de juiste import-regel eromheen, klaar om te installeren. Onderzoekers van Virginia Tech en de universiteiten van Oklahoma en Texas telden ze in 2025 op.

Dat klinkt als een kwaliteitsprobleem. Iets dat vanzelf slijt zodra de modellen beter worden. Precies dat idee is gevaarlijk.

Want die verzonnen namen zijn geen willekeurige ruis. Ze zijn stabiel, ze komen terug, en een aanvaller die zo'n naam vóór jou registreert verandert je codeerassistent in zijn bezorgkanaal. Dat is slopsquatting, en het is geen rafelrandje van AI-hallucinatie. Het is een structureel aanvalskanaal. "Het model wordt wel beter" verdedigt je daar nergens tegen, want de aanvaller hoeft alleen te wachten tot het model één keer, voorspelbaar, een naam noemt die hij al bezit.

Het voorspelbare is het wapen, niet het foutpercentage

De reflex is naar dat percentage te kijken. Een op de vijf, dat breng je toch omlaag met een betere lichting modellen? Maar het getal dat telt is niet hoe vaak een model iets verzint, het is hoe voorspelbaar het dat doet.

Dat is de onprettige uitkomst van het onderzoek: geef je dezelfde opdracht nog eens, dan keert meer dan de helft van de verzonnen pakketnamen gewoon terug. Het zijn geen losse verschrijvingen maar stabiele patronen. Een aanvaller hoeft de hallucinatie niet te forceren, hij hoeft haar één keer te vinden, de naam vast te leggen en te wachten.

Bij repositories is het nog kaler. De geteste codeertools plakken de naam van een repository standaard als eigenaar vóór diezelfde naam, in de vorm naam/naam. Een aanvaller hoeft het model daarvoor niet eens te bevragen: hij tekent de lijst met te kapen adressen vooraf uit. Palo Alto's onderzoekers deden datzelfde met webdomeinen en vonden ruim 250.000 niet-geregistreerde, gehallucineerde domeinen die klaarlagen om te claimen, soms weken voordat een aanvaller er eentje kwam vastleggen.

Voorspelbaarheid is normaal een deugd van software. Hier is het de kwetsbaarheid. Niet hoe vaak een model zich vergist bepaalt je risico, maar hoe betrouwbaar het dezelfde fout maakt: een codeermodel dat stabiele, herhaalbare namen verzint, levert een aanvaller een boodschappenlijstje. Een beter model verkleint de kans, maar sluit het gat niet, want hij heeft aan één voorspelbare misser genoeg.

Een verzonnen citaat lees je, een verzonnen pakket draait

Er is een geruststellend soort hallucinatie: de AI die een bron verzint in een rapport, een bedrag dat niet klopt, een casus die nooit bestond. Vervelend, maar een mens leest mee en vangt het op. Dat hallucineren geen storing is maar hoe een taalmodel werkt, verandert daar niets aan zolang er een mens tussen zit die de uitvoer nog leest.

Bij een codeeragent zit die mens er niet meer tussen. Vraag je hem een populaire nieuwe repository te klonen, dan wijst hij tot 85 procent van de keren naar de verkeerde plek, en bij trending skills bijna altijd. Zit op die plek een door een aanvaller geclaimde variant, dan haalt de agent die code binnen en voert een tool met terminalrechten haar uit, zonder tussenstap. Van één verzonnen naam naar een reverse shell, en van duizend losse installaties naar een botnet voor cryptomining of ransomware.

De kern is niet het model maar de autonomie eromheen. Een agent die zelf code ophaalt en draait, vergroot je aanvalsoppervlak sneller dan je het dichtzet. Omdat diezelfde agent je code leest en dus ook je secrets in beeld heeft, is het buitmaken van tokens en sleutels precies wat zo'n eerste payload probeert.

Het model faalt het hardst waar het het meest telt

Blijft de vraag of dit niet gewoon wegtrekt als de modellen slimmer worden. Nee, en het onderzoek laat precies zien waarom niet. Repositories van vóór 2019 lost een model prima op, met een foutpercentage van rond een procent. Voor code uit 2025 schiet dat richting 92 procent. Het model is op zijn slechtst precies daar waar ontwikkelaars het meest grijpen: verse, populaire, veel gedownloade bronnen die nog niet in de trainingsdata zaten.

Dat gat sluit zich niet vanzelf, het schuift mee. Er is altijd een nieuwste lichting pakketten en repositories die het model nog niet heeft gezien, en juist die trekt de meeste downloads en dus de meeste aandacht van aanvallers. Een model van volgend jaar kent de code van dit jaar, maar staat opnieuw met lege handen bij de code van volgend jaar. Beter model, hetzelfde structurele gat.

Om eerlijk te zijn: de modellen worden echt beter

Dat scheelt ook echt. Welk model je kiest maakt uit: de zuinigste commerciële modellen verzinnen zo'n 5 procent van de pakketten, tegen ruim 20 procent voor sommige open modellen, en de beste zat in de test rond de 3,5 procent. Registers grijpen sneller in, de besmette AsyncAPI-pakketten stonden vorige week iets meer dan vier uur online voordat npm ze verwijderde. En er zijn echte verdedigingen: versies vastpinnen, een wachttijd op nieuwe pakketten, handtekeningen controleren.

Dat is een serieus argument. Toch klopt de geruststelling niet, om één reden: de asymmetrie. Jij moet de hallucinatie op nul houden, overal, altijd. De aanvaller heeft er één nodig, één keer, op een naam die hij kon voorspellen. 3,5 procent van een half miljoen pakketten zijn nog altijd tienduizenden bruikbare namen.

De controles die zo solide klinken, vechten bovendien deels de verkeerde strijd. Bij AsyncAPI kaapte de aanvaller de eigen release-pijplijn van het project, zodat de kwaadaardige versies geldige provenance meekregen en er als echte releases uitzagen. Een handtekening bewijst wie iets publiceerde, niet dat je het had moeten vertrouwen. Een vers geregistreerd, gehallucineerd pakket heeft, waarschuwen beveiligingsonderzoekers, geen verleden waarin een scanner iets verdachts kan vinden.

De verdediging die wél werkt, staat niet in de release-notes van je modelleverancier maar in je eigen pijplijn. In mijn eigen builds is dat het uitgangspunt: geen agent haalt iets op of voert iets uit zonder dat eerst is gecontroleerd dat de bron bestaat en de juiste is. Pin je afhankelijkheden en leg een wachttijd op nieuwe versies. Houd secrets en productiesleutels uit de shell waarin de agent werkt, en draai die agent in een omgeving die je zonder spijt kunt weggooien. Dat is geen wachten op een beter model. Dat is stoppen een verzonnen naam als feit te behandelen.

Waar een verzonnen naam een commando wordt

Het geruststellende verhaal is dat hallucinatie een rafelrand is die met elke modelgeneratie gladder wordt. Voor een verzonnen bronvermelding in een rapport klopt dat half. Voor je software-toeleveringsketen niet. Een aanvaller heeft niet nodig dat het model slecht is, hij heeft nodig dat het zelfverzekerd en voorspelbaar de naam noemt die hij al bezit.

Zolang een gegenereerde naam rechtstreeks een kloon of een installatie in rolt zonder controle ertussen, is de nauwkeurigheidscurve van het model niet je verdediging. De vraag is niet of het model al nauwkeurig genoeg is. De vraag is waar in jouw pijplijn een verzonnen naam een uitgevoerd commando wordt. Dat is een plek die alleen jij kunt dichtzetten.

Veelgestelde vragen

Alisina Nawabi
Geschreven doorAlisina Nawabi

AI Product Engineer & Solutions Architect

AI-agents die eerst controleren

Zet je AI-agents in je ontwikkel- of bedrijfsproces? Ik denk mee, ontwerp en bouw ze end-to-end, met de controles ingebouwd: verifiëren voordat er iets wordt opgehaald of uitgevoerd, secrets buiten bereik en een omgeving die je veilig kunt weggooien.

Meer informatie

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

Gerelateerde artikelen

Aanvallers besmetten populaire AsyncAPI-npm-pakketten met een inloggegevens-steler
Nieuws
4 min

15 jul 18:12

Aanvallers besmetten populaire AsyncAPI-npm-pakketten met een inloggegevens-steler

Aanvallers kaapten de release-pijplijn van vier veelgebruikte AsyncAPI-pakketten op npm en publiceerden versies met een inloggegevens-steler, waaronder @asyncapi/specs met ruim 2 miljoen wekelijkse downloads. Wie ze gebruikt, controleert nu en roteert tokens.

Het is maar een koppeling? Waarom een MCP-tool je AI-agent net zo goed aanstuurt als jij
Inzicht
7 min

14 jul 17:00

Het is maar een koppeling? Waarom een MCP-tool je AI-agent net zo goed aanstuurt als jij

Zodra je een MCP-tool aan een AI-agent koppelt, geef je de eigenaar van die tool-omschrijving dezelfde schrijftoegang tot je agent als jezelf. 'Het is maar een koppeling' is daarmee geen technisch detail, maar een vertrouwensbeslissing.

Phishing herken je niet meer: verdediging begint bij je proces, niet je software
Inzicht
7 min

19 jun 11:00

Phishing herken je niet meer: verdediging begint bij je proces, niet je software

AI heeft de herkenbare signalen uit phishing gesloopt: een goede nepmail is niet meer van echt te onderscheiden. Daarom begint verdediging niet bij software of scherpere medewerkers, maar bij hoe je je processen ontwerpt.

Digitale kwakzalverij: de onbetrouwbaarheid van AI-gezondheidsadvies
Inzicht
7 min

18 mrt 08:18

Digitale kwakzalverij: de onbetrouwbaarheid van AI-gezondheidsadvies

Een chatbot klinkt als een arts, en juist dat is het gevaar. Wat recent onderzoek laat zien over AI en gezondheidsvragen, waarom het misgaat, en hoe je deze tools verantwoord inzet.

Je leverancier patcht in stilte, en dat is het echte probleem
Inzicht
6 min

17 jul 17:00

Je leverancier patcht in stilte, en dat is het echte probleem

Een leverancier die een lek stil dicht, kiest zijn eigen gemoedsrust boven jouw veiligheid. Waarom de manier waarop hij met kwetsbaarheden omgaat in je contract hoort, en niet in zijn brochure.

Meta metselt zich in, en de open fakkel verhuist
Signaal
7 min

17 jul 16:01

Meta metselt zich in, en de open fakkel verhuist

Meta ruilde zijn open Llama in voor een gesloten Muse Spark en metselt er een eigen chip, cloud en app-laag omheen. Los is het bedrijfsnieuws, samen een beweging. En de open fakkel? Die verhuist gewoon.