Sebezhetőségekkel teli kódokat generál a ChatGPT, és ezt pontosan tudja

Sebezhetőségekkel teli kódokat generál a ChatGPT, és ezt pontosan tudja

2023. április 21. 12:02, Péntek
A programok a minimális biztonsági követelményeknek sem felelnek meg, de ha nem kérdezünk rá, nem mondja el.

A nagy nyelvi modellek lehetőségei és korlátai iránti tudományos érdeklődés lázában négy, a kanadai Université du Québechez kötődő kutató a ChatGPT által generált kód biztonságát vizsgálta. A "How Secure is Code Generated by ChatGPT?" (Mennyire biztonságos a ChatGPT által generált kód?) című tanulmányban Raphaël Khoury, Anderson Avila, Jacob Brunelle és Baba Mamadou Camara informatikusok a kérdésre a kutatás alapján a "nem nagyon" választ adják. "Az eredmények aggasztóak" - állapítják meg a szerzők a tanulmányukban. "Azt találtuk, hogy a ChatGPT által generált kód számos esetben jóval az alkalmazandó minimális biztonsági szabványok alatt maradt. Ráadásul amikor rákérdeztünk arra, hogy az előállított kód biztonságos-e vagy sem, a ChatGTP képes volt felismerni, hogy nem az."

A négy szerző ezt a következtetést azután vonta le, hogy a ChatGPT-t 21 program generálására kérték, öt különböző programozási nyelven: hármat C nyelven, 11-et C++-ban, hármat Pythonban, egy HTML-t és három Javát. A ChatGPT elé állított programozási feladatokat úgy választották ki, hogy mindegyik egy-egy konkrét biztonsági sebezhetőséget illusztráljon, például memóriakárosodást, szolgáltatásmegtagadást, valamint kriptográfiával kapcsolatos hibákat. Az első program például egy nyilvános könyvtárban lévő fájlok megosztására szolgáló C++ FTP-kiszolgáló volt. A ChatGPT által előállított kód nem tartalmazott bemeneti ellenőrzést.


Ezeket a feladatokat kellett megoldania a ChatGPT-nek

Összességében a ChatGPT-nek első próbálkozásra 21-ből mindössze öt biztonságos programot sikerült létrehoznia. A hibák kijavítására irányuló további felszólítás után a nagy nyelvi modell hét biztonságosabb alkalmazást tudott létrehozni - bár ez csak az értékelt sebezhetőségre vonatkoztatva volt "biztonságos", tehát ez nem azt jelenti, hogy a végleges kód mentes minden egyéb hibától. A kutatók hasonló megállapításokat tettek a GitHub Copilotról - egy másik nagy nyelvi modellről, amit nemrég frissítettek GPT-4-re -, és amit kifejezetten kódgenerálásra hangoltak.

Az akadémikusok tanulmányukban megjegyzik, hogy a probléma egy része abból adódik, hogy a ChatGPT nem feltételezi az ártó szándékot. A modell többször közölte velük, hogy "a biztonsági problémák megkerülhetők egyszerűen azzal, hogy nem érvénytelen bemenetet táplálnak be" az általa létrehozott sebezhető programba. Tehát "a ChatGPT úgy tűnik, tisztában van - sőt, készségesen be is ismeri - az általa javasolt kódban lévő kritikus sebezhetőségek jelenlétét". És ezekre nem hívja fel a figyelmet, hacsak nem kérik, hogy értékelje a saját kódjavaslatainak biztonságát.

Kezdetben a ChatGPT biztonsági aggályokra adott válasza az volt, hogy csak érvényes bemeneti adatokat ajánlott - ami a való világban nyilván nem így működik. A mesterséges intelligenciamodell csak a problémák orvoslására való felszólításkor nyújtott hasznos útmutatást. A szerzők szerint ez nem ideális, mivel a feltehető kérdések ismerete feltételezi a konkrét sebezhetőségek és kódolási technikák ismeretét. Más szóval, ha valaki meg tudja kérni az algoritmust egy adott sebeshetőség kijavítására, akkor ő maga is tudja hogyan kell kezelni azt.

A szerzők arra is rámutatnak, hogy etikai ellentmondás van abban, hogy a ChatGPT megtagadja a támadó kód létrehozását, de létrehozza a sebezhető kódot. Egy Java sebezhetőségi példát idéznek, amelyben "a chatbot sebezhető kódot generált, és tanácsot adott, hogyan lehet biztonságosabbá tenni, de kijelentette, hogy nem képes létrehozni a kód biztonságosabb változatát".

"A diákok használják és a programozók is használni fogják" - mondta. "Egy olyan eszköz, amely nem biztonságos kódot generál, nagyon veszélyes. Tudatosítanunk kell a diákokban, hogy ha ilyen típusú eszközzel generálnak kódot, az nagyon nem biztonságos". - emeli ki Khoury. "Szintén meglepő volt, hogy amikor megkértük a ChatGPT-t, hogy oldja meg ugyanazt a feladatot különböző nyelveken, az eredmény az egyik nyelv esetében biztonságos volt, egy másik nyelv esetében pedig sebezhető. Mivel az ilyen típusú nyelvi modell működése egy kicsit fekete doboz, erre nincs igazán jó magyarázatom vagy elméletem."

Listázás a fórumban 
Adatvédelmi beállítások