Van de 21 programma’s waar ChatGPT code moest genereren, waren er maar vijf veilig in een eerste poging.
Vier computerwetenschappers, Raphaël Khoury, Anderson Avila, Jacob Brunelle, en Baba Mamadou Camara, wilden ChatGPT testen op het correct en vooral veilig genereren van code om programma’s te ontwikkelen. In een uitgebreide paper delen ze hun bevindingen. Is ChatGPT eigenlijk veilig als hulp om code te genereren? Uit het resultaat blijkt dat de AI-tool zelden op niveau presteert.
Volgens The Register vroegen de vier auteurs ChatGPT om 21 programma’s te genereren in vijf verschillende programmeertalen: C (3), C++ (11), python (3), HTML (1) en Java (3). Het onderzoek selecteerde elke opdracht heel specifiek om bepaalde kwetsbaarheden uit te lokken zoals geheugencorruptie, denial of service en andere zwaktes.
In totaal kon ChatGPT amper vijf programma’s van de eerste keer veilig genereren. Na het verder doorvragen rond specifieke veiligheidsfouten, corrigeerde de AI-tool er nog een extra zeven. De onderzoekers benadrukken dat de resultaten werden afgetoetst op potentiële kwetsbaarheden. Het is geen zekerheid dat de finale code helemaal vrij is van andere kwetsbaarheden.
GitHub Copilot
Het onderzoek wijst naar het gelijkaardig gedrag van GitHub Copilot, eveneens een AI-tool die gebaseerd is op het GPT-3-model. ChatGPT maakt vandaag gebruik van het in vele gevallen accuratere GPT-4-model.
lees ook
AI voor de massa: een geschenk of een gevaar?
Wat de auteurs opvallend vinden, is dat ChatGPT blijkbaar wel weet dat er fouten in de code zitten. Van zodra je de AI-tool wijst naar een kwetsbaarheid, kan het die vaak zelf corrigeren. Het gaat ten slotte om een algoritme dat niet echt iets ‘weet’, maar wel onveilig gedrag kan herkennen.
Opvallend: een programma in één programmeertaal schrijven werkt soms prima, terwijl bij het gebruik van een andere taal opeens kwetsbaarheden bevat.
Wie zich graag wil verdiepen in het uitstekende onderzoek van de vier auteurs, raden we aan om de paper door te lezen en op GitHub de resultaten te bewonderen.