Security of LLM-generated Code: A Comparative Analysis
Dit artikel evalueert empirisch de beveiliging van code gegenereerd door zeven populaire Large Language Models en stelt vast dat ze allemaal code produceren met kwetsbaarheden, waarbij het merendeel een kritieke of hoge ernst heeft.
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 team van zeven verschillende "super-intelligente" leerlingen hebt ingehuurd om code te schrijven voor je software. Deze leerlingen worden aangedreven door Kunstmatige Intelligentie (KI) en staan bekend om hun ongelooflijke snelheid en behulpzaamheid. Ze zijn de top-tools in de industrie, gebruikt door miljoenen ontwikkelaars.
De onderzoekers aan de Carleton University besloten deze zeven leerlingen aan een strenge test te onderwerpen. Ze vroegen hen niet om een ruimteschip te bouwen of een roman te schrijven; ze gaven hen een specifieke set van 81 veelvoorkomende coderingstaken – zoals "maak een inlogpagina" of "laat een gebruiker een foto uploaden". Het doel was om te zien of de code die deze KI-leerlingen schreven veilig was om te gebruiken, of dat deze volzat met verborgen valkuilen.
Hier is wat ze vonden, eenvoudig uiteengezet:
1. De "Perfecte" Leerling bestaat niet
De meest schokkende ontdekking? Geen van de zeven leerlingen slaagde voor de test. Elk enkel KI-tool dat ze testten (inclusief grote namen zoals OpenAI's GPT-4o, Google's Gemini en IBM's watsonx) produceerde code met beveiligingsgaten.
Stel je voor dat je een auto koopt bij zeven verschillende beroemde fabrikanten. Je zou verwachten dat ten minste één van hen een perfecte veiligheidsbeoordeling heeft. In plaats daarvan ontdekten de onderzoekers dat elke auto een defecte rem of een los stuurwiel had. Sterker nog, het overgrote deel van de code die ze schreven, bevatte "kritieke" of "hoge" ernstige gebreken – dit zijn geen kleine krassen; het zijn gaten die hackers kunnen gebruiken om binnen te dringen.
2. De "Valstrik" in de instructies
De onderzoekers gebruikten een speciale set instructies (prompts) die ontworpen waren om de KI te verleiden tot fouten. Bijvoorbeeld, ze vroegen een KI om "een functie te schrijven die het een gebruiker mogelijk maakt om een bestand te uploaden".
- De KI-fout: Sommige KI's schreven code die het een hacker mogelijk zou maken om in plaats van een foto een virus te uploaden.
- De verrassing: Zelfs wanneer de KI de hoofdtaak wel goed uitvoerde, vergat het vaak de veiligheidsregels. Bijvoorbeeld, één KI schreef een inlogpagina die perfect werkte, maar wachtwoorden in platte tekst opslaat (alsof je je wachtwoord op een post-it note op je computer schrijft).
3. De "Debug-modus" ramp
Een van de meest voorkomende fouten die werden gevonden, was het laten staan van de "Debug-modus" aan.
- De analogie: Stel je een restaurantkeuken voor. "Debug-modus" is als het achterdeur wijd open laten staan met een bordje dat zegt: "Kom binnen en bekijk onze geheime recepten en probeer de kachel uit." Dit is geweldig voor de chef-kok wanneer hij leert, maar verschrikkelijk voor een echt restaurant dat openstaat voor het publiek.
- De realiteit: De KI bleef code schrijven die deze "achterdeur" open liet. Als een ontwikkelaar deze code gebruikte zonder te controleren, kon hun hele systeem gehackt worden. De onderzoekers merkten op dat hoewel sommige KI-tools een klein opmerking toevoegden met de tekst "Zet dit uit voor het echte leven", ze niet konden vertrouwen op ontwikkelaars om die opmerking daadwerkelijk te lezen en op te volgen.
4. Het "Snel maar Gevaarlijk" paradox
De studie vond een vreemd patroon bij één specifiek tool, IBM's watsonx.
- De analogie: Stel je een leerling voor die zeer korte, simpele zinnen schrijft (korte code). Je zou denken: "Korte zinnen zijn makkelijker te controleren, dus ze moeten veiliger zijn."
- De realiteit: Deze leerling had eigenlijk het hoogste percentage gevaarlijke fouten per regel code. Omdat de code zo kort was, werden belangrijke veiligheidscontroles volledig overgeslagen. Het was als een bestuurder die een afkorting neemt door een mijnenveld omdat hij haast heeft.
5. De "Overmoedige" Ontwikkelaar
Het artikel benadrukt een gevaarlijk menselijk element. Ontwikkelaars houden van deze KI-tools omdat ze het werk sneller maken. Echter, de studie suggereert dat ontwikkelaars te vertrouwen worden.
- De analogie: Het is als een bestuurder die een auto koopt met een "Zelfrijdende" functie en vervolgens achter het stuur in slaap valt, ervan uitgaande dat de auto nooit zal crashen.
- De realiteit: De KI-tools zijn zo goed in het klinken van zelfverzekerd dat ontwikkelaars ervan uitgaan dat de code veilig is. De onderzoekers ontdekten dat meer dan 73% van de codefragmenten die door deze tools werden gegenereerd, ten minste één beveiligingsfout bevatte. Als een ontwikkelaar deze code gewoon kopieert en plakt zonder het te controleren, nodigt hij in feite problemen uit.
De Conclusie
Het artikel concludeert dat hoewel deze KI-tools geweldig zijn in het snel schrijven van code, ze momenteel verschrikkelijk zijn in het standaard schrijven van veilige code.
Ze zijn als een zeer getalenteerde maar onervaren chef-kok die sneller groenten kan snijden dan wie dan ook, maar blijft vergeten zijn handen te wassen of te controleren of het voedsel bedorven is. De onderzoekers waarschuwen dat, totdat deze KI-tools worden geleerd om veiligheid boven snelheid te stellen (of totdat ontwikkelaars leren om elke regel te controleren), het gebruik ervan om software te schrijven een riskante gok is.
De Les: Vertrouw niet zomaar op de KI. Behandel de code die het genereert als een concept van een junior medewerker: het moet worden beoordeeld door een senior beveiligingsexpert voordat het live gaat.
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.