← Nieuwste papers
🤖 AI

Correct Code, Vulnerable Dependencies: A Large Scale Measurement Study of LLM-Specified Library Versions

Deze grootschalige meetstudie onthult dat LLM's vanwege systematische biases ten opzichte van specifieke risicovolle releases vaak kwetsbare en incompatibele versies van third-party bibliotheken specificeren in gegenereerde Python-code, wat een kritiek, eerder over het hoofd gezien risicogebied in door AI ondersteunde softwareontwikkeling benadrukt.

Oorspronkelijke auteurs: Chengjie Wang, Jingzheng Wu, Xiang Ling, Tianyue Luo, Chen Zhao

Gepubliceerd 2026-05-08
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Chengjie Wang, Jingzheng Wu, Xiang Ling, Tianyue Luo, Chen Zhao

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je voor dat je een superintelligente, ongelooflijk snelle persoonlijke assistent inhuurt om code te schrijven voor je softwareprojecten. Deze assistent, aangedreven door een Large Language Model (LLM), is uitstekend in het schrijven van de logica: "Zo vergrendel je een deur," of "Zo stuur je een bericht."

Maar er is een addertje onder het gras. Om de code te laten werken, moet de assistent gebruikmaken van "tools" (derde-partijbibliotheken) die al bestaan. Het probleem dat dit paper onderzoekt, is dat de assistent niet zomaar de tools pakt; het pakt specifieke, verouderde en soms defecte versies van die tools, en doet dit zonder dat je het merkt.

Hieronder volgt een uiteenzetting van de bevindingen van de studie, gebruikmakend van eenvoudige analogieën:

1. Het "Recept" versus de "Boodschappenlijst"

De onderzoekers testten twee manieren om de assistent om code te vragen:

  • De "Inline"-modus: Je vraagt om een codefragment, en de assistent schrijft de code en voegt bij elke tool een kleine opmerking toe met de tekst: "Gebruik Tool X, Versie 1.0."
  • De "Manifest"-modus: Je vraagt de assistent om een codefragment en een aparte boodschappenlijst (een requirements.txt-bestand) voor de tools te schrijven.

De Bevinding:
Wanneer er om de "Inline"-opmerking werd gevraagd, was de assistent zeer enthousiast om exacte versies te specificeren (95% van de tijd). Maar wanneer er om de "Boodschappenlijst" werd gevraagd, werd het plotseling lui en vaag, en liet het vaak de versienummers leeg (slechts 6% tot 59% van de tijd).

  • Analogie: Het is alsof een kok, wanneer hem wordt gevraagd een recept te schrijven, zegt: "Gebruik exact zout uit de oogst van 2015." Maar wanneer hem wordt gevraagd een boodschappenlijst voor de hele keuken te schrijven, schrijft hij gewoon "Zout" en laat hij het aan jou over om uit te zoeken welk jaar zout je moet kopen.

2. Het "Verlopen Melk"-probleem (Veiligheidsrisico's)

De studie vond dat wanneer de assistent wel een specifieke versie kiest, het vaak een versie kiest die gevaarlijk is.

  • De Statistiek: In 37% tot 56% van de gevallen had de specifieke versie die de assistent koos een bekende veiligheidsfout (een "CVE").
  • De Ernst: De meeste van deze fouten waren van "Kritieke" of "Hoge" ernst.
  • De Twist: Deze fouten waren niet geheim. Ze waren publieke kennis voordat de assistent zelfs maar getraind was. De assistent wist gewoon niet dat ze ze moest vermijden.
  • Analogie: Stel je voor dat de assistent een tijdmaker is die altijd melk pakt die drie jaar verlopen is. Hoewel het vervaldatum jaren geleden op het pakje stond gedrukt, blijft de assistent je diezelfde verlopen melk geven, in de veronderstelling dat het vers is.

3. Het "Convergentie"-effect (Iedereen kiest hetzelfde slechte ding)

Je zou denken dat verschillende AI-modellen verschillende versies zouden kiezen. Dat doen ze niet.

  • De Bevinding: Alle tien de geteste modellen (van Google, OpenAI, Alibaba, enz.) convergeerden naar exact dezelfde kleine set van risicovolle versies. Als de assistent "Tool X" kiest, kiest het bijna altijd "Versie 2.31.0", zelfs als nieuwere, veiligere versies bestaan.
  • Analogie: Het is alsof elke enkele persoon in een stad, ongeacht hun achtergrond, beslist om precies hetzelfde paar schoenen te kopen waarvan bekend is dat ze een gebroken zool hebben. Het is geen toeval; het is een gedeelde gewoonte die is aangeleerd uit dezelfde oude handboeken.

4. Het "Gebroken Sleutel"-probleem (Compatibiliteit)

Zelfs als de tool niet gevaarlijk is, past hij misschien niet.

  • De Bevinding: De versies die de assistenten kozen, konden vaak niet worden geïnstalleerd of werkten niet met de code die ze schreven.
    • Statische Check: De code zou niet eens installeren (zoals het proberen om een vierkante pen in een rond gat te steken).
    • Dynamische Check: Zelfs als het geïnstalleerd werd, zou de code crashen wanneer je het probeerde uit te voeren.
  • De Oorzaak: De assistenten houden ervan om zeer oude versies van tools te kiezen. Deze oude versies vertrouwen op onderdelen van het computersysteem die in moderne computers zijn verwijderd.
  • Analogie: De assistent schrijft code die zegt: "Zet het licht aan," maar het specificeert een gloeilamp uit 1990 die een fitting vereist die niet bestaat in je huis van 2026. De code is perfect, maar de gloeilamp past niet.

5. Waarom kunnen we de assistent niet gewoon "vertellen" om beter te zijn?

De onderzoekers probeerden een paar dingen om dit op te lossen:

  • De "Wees Alstublieft Veilig"-prompt: Ze vertelden de assistent: "Gebruik alstublieft geen versies met veiligheidsgaten."
    • Resultaat: Het werkte niet. De assistent koos nog steeds de slechte versies.
    • Waarom: De assistent "vergeet" de regels niet; het is gewoon niet verbonden aan een live database met veiligheidswaarschuwingen. Het is alsof je een student vraagt die een handboek uit 2023 heeft uit het hoofd geleerd om een nieuwe wet te vermijden die in 2025 is aangenomen. Ze hebben de informatie letterlijk niet in hun hoofd.
  • De "Externe Anker"-oplossing: Toen de onderzoekers de assistent dwongen om een vooraf goedgekeurde lijst met veilige versies te gebruiken (zoals een strikte boodschappenlijst die door een mens is verstrekt), verdwenen de problemen.
    • Resultaat: De veiligheidsrisico's daalden en de code werkte daadwerkelijk.

De Conclusie

Het paper concludeert dat LLM's uitstekend zijn in het schrijven van de "logica" van code, maar vreselijk zijn in het beheren van de "toeleveringsketen" van tools.

Ze gedragen zich als een behulpzame maar onbetrouwbare bibliothecaris die je een boek geeft dat er perfect uitziet, maar in feite een gevaarlijke, verouderde editie is. Je kunt de specifieke versienummers die ze suggereren niet vertrouwen. Je moet ze behandelen als een ruwe conceptversie en controleer altijd de versienummers met een veiligheidstool voordat je ze gebruikt.

Het probleem is niet dat de AI "dom" is; het is dat de AI is getraind op oude data die het ertoe brengt populaire maar oude versies te prefereren, en het mist een live verbinding met huidige veiligheidswaarschuwingen. Totdat de AI is verbonden met live veiligheidstools, moet de menselijke ontwikkelaar degene zijn die de vervaldatums controleert.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →