Beveiligingsonderzoekers van cyberrisicobeheerbedrijf Vulcan.io hebben een proof of concept gepubliceerd over hoe hackers ChatGPT 3.5 kunnen gebruiken om kwaadaardige code te verspreiden vanuit vertrouwde repositories. De studie benadrukt de beveiligingsrisico’s die inherent zijn aan het vertrouwen op het aanbod van ChatGPT voor coderingsoplossingen.
Methodologie
Onderzoekers hebben veelgestelde coderingsvragen verzameld op Stack Overflow (een coderingsvraag en -antwoordforum). Ze kozen 40 codeeronderwerpen (bijvoorbeeld analyse, wiskunde, scantechnologie, enz.) en gebruikten de eerste 100 vragen voor elk van de 40 onderwerpen. De volgende stap was het filteren van ‘hoe’-vragen die programmeerpakketten in de query bevatten. De gestelde vragen hadden betrekking op Node.js en Python.
Vulcan.io legt uit:
“Al deze vragen zijn gefilterd met behulp van de programmeertaal die in de vraag is opgenomen (node.js, python, go). Nadat we veel van de meest gestelde vragen hadden verzameld, hebben we de lijst teruggebracht tot de ‘hoe’-vragen. Vervolgens hebben we ChatGPT via zijn API om alle verzamelde vragen gevraagd. We gebruikten een API om de methode van de aanvaller te repliceren om in de kortst mogelijke tijd zoveel mogelijk niet-bestaande pakketaanbevelingen te krijgen. Naast elke vraag en na het antwoord van ChatGPT hebben we een vervolgvraag toegevoegd waarin we vroegen om meer pakketten die ook de vraag beantwoordden. We hebben alle gesprekken in een bestand opgeslagen en hun antwoorden geanalyseerd. Vervolgens scanden ze de antwoorden om aanbevelingen te vinden voor codepakketten die niet bestonden.
Tot 35% van de codepakketten van ChatGPT waren gehallucineerd
Van de 201 Node.js-vragen raadde ChatGPT 40 pakketten aan die niet beschikbaar waren. Dit betekent dat 20% van de ChatGPT-antwoorden hallucinerende codepakketten waren. Voor de Python-vragen van de 227 vragen bestond meer dan een derde van de antwoorden uit hallucinerende codepakketten, 80 pakketten niet. Het totale aantal niet-aangegeven pakketten was zelfs nog hoger. De onderzoekers documenteerden: “We hebben 201 vragen ingediend bij Node.js en ontdekten dat meer dan 40 van deze vragen resulteerden in een antwoord dat ten minste één niet-gepubliceerd pakket bevatte. In totaal hebben we meer dan 50 ongepubliceerde npm-pakketten ontvangen. We stelden 227 vragen voor Python, en meer dan 80 van die vragen resulteerden in ten minste één niet-gepubliceerd pakket, voor een totaal van meer dan 100 niet-gepubliceerde pip-pakketten.
Bewijs van concept (PoC)
Hieronder een proof of concept. Ze namen de naam van een van de niet-bestaande codepakketten die in de NPM-repository hadden moeten bestaan en creëerden dezelfde naam in die repository. Het bestand dat ze hadden geüpload was niet kwaadaardig, maar ze belden naar huis om te zeggen dat iemand het had geïnstalleerd.
Zij schrijven:
“Het programma stuurt de server van de bedreigingsactor de hostnaam van het apparaat, het pakket waar het vandaan kwam en het absolute pad naar de map waar het modulebestand zich bevindt…” Wat er vervolgens gebeurde, was dat het “slachtoffer” langskwam en dezelfde vraag stelde als de aanvaller, adviseerde ChatGPT een pakket met “kwaadaardige” code en hoe het te installeren. En inderdaad, het pakket is geïnstalleerd en geactiveerd.
De onderzoekers legden uit wat er daarna gebeurde:
“Het slachtoffer installeert het kwaadaardige pakket volgens de aanbeveling van ChatGPT. De aanvaller ontvangt gegevens van het slachtoffer via onze pre-implementatie-aanroep naar node index.js naar de lange hostnaam. Een reeks conceptafbeeldingen toont een detail van de installatie van een nietsvermoedende gebruiker.
Hoe u uzelf kunt beschermen tegen slechte ChatGPT-coderingsoplossingen
De onderzoekers raden aan dat u, voordat u een pakket downloadt en installeert, op zoek gaat naar signalen die erop kunnen wijzen dat het pakket mogelijk kwaadaardig is. Zoek naar zaken als de aanmaakdatum, hoeveel er zijn geüpload en of er positieve opmerkingen en opmerkingen aan de bibliotheek zijn toegevoegd.
Is ChatGPT betrouwbaar?
ChatGPT is niet getraind om correcte antwoorden voor te stellen. Hij was getraind om correcte antwoorden voor te stellen. Dit onderzoek laat zien wat de gevolgen zijn van die training. Dit betekent dat het erg belangrijk is om te controleren of alle feiten en aanbevelingen correct zijn voordat u ChatGPT gebruikt. Accepteer niet alleen dat de output goed is, maar test het. Als het op coderen aankomt, wil je misschien extra voorzichtig zijn voordat je een van de door ChatGPT aanbevolen pakketten installeert.
Lees de originele onderzoeksdocumentatie:
Kunt u de aanbevelingen van het ChatGPT-pakket vertrouwen?
Uitgelichte afbeelding door Shutterstock/Roman Samborskyi