Biztonságosabb kódot eredményez-e, ha fejlesztők Copilotot vagy hozzá hasonló, mesterségesintelligencia-alapú eszközt használnak a munkájukhoz? – tette fel a kérdést a Stanford Egyetemen egy kutatócsapat. Válaszuk egyértelmű: nem. Azok a fejlesztők, akik használták munkájukhoz az OpenAI codex-davinci-002 modelljén alapuló MI-asszisztenst, lényegesen kevésbé biztonságos kódot adtak ki a kezük közül, mint azok, akik önállóan dolgoztak. Emellett az MI-asszisztenst használók sokkal inkább meg voltak győződve arról, hogy az általuk készített kód biztonságos, mint azok, akik nem használtak MI-t. Utóbbi csoport jobban ügyelt arra is, hogy kódja rendezett, érthető legyen. (Az OpenAI projektjével és a körülötte dúló vitával ezekben a cikkekben foglalkoztunk.)
A Stanfordon ugyan csak három programozási nyelvet (Python, C, Verilog) vizsgáltak, azokat sem átfogóan, de mint a The Register felhívja a figyelmet, hasonló eredményre jutottak más kutatások is: például a New York University kutatóinak egy 2021-es kutatása a Copilot segítségével készült kódok 40 százalékában talált potenciálisan kihasználható sebezhetőségeket.
Gyorsít, de el is kényelmesít
A Stanford kutatói kísérleteztek. Toboroztak 47 résztvevőt az egyetemi hallgatóktól a több évtizedes tapasztalattal rendelkező professzionális programozókig, akiknek konkrét biztonsági témájú kódolási feladatokat kellett elvégezniük. 33 fejlesztőnek hozzáférést adtak a Codexhez, a GPT-3 finomhangolt változatához egy egyedi felhasználói felületen keresztül. 14 fejlesztőnek – ők voltak a kontroll csoport – viszont MI-támogatás nélkül kellett megoldania ugyanazokat a feladatokat. Mindkét csoport felhasználhatott neten közzétett kódrészleteket (ez általános programozói gyakorlat). A kutatók képernyőfelvételeket is készítettek a fejlesztők munkájáról, hogy visszakövethessék például a kódmásolást, ezáltal a hibák forrását.
A feladat elvégzése után a fejlesztőknek ki kellett értékelniük saját kódjukat, hogy mennyire tartják helyesnek és biztonságosnak az alkalmazott megoldásokat. A kutatócsapat ezt az értékelést vettette össze azzal, amit a kód részletes elemzése mutatott.
Az összevetésből három fontos dolog derült ki:
● a Codexet használók összességében nagyobb valószínűséggel értékelték helyesnek a megoldásaikat, mint azok, akik a kontroll csoportból valóban jó és biztonságos kódot írtak;
● Python nyelven a kontroll csoport tagjai kétszer nagyobb valószínűséggel (!) készítettek biztonságos kódot, mint azok, akik használhatták a Codexet;
● azok a Codex-támogatással dolgozó fejlesztők, akiknek nem volt korábbról hozott digitális biztonsági tapasztalata, gyakrabban használtak szerkesztetlen, generált kódot, mint azok, akik tapasztaltak voltak ezen a téren.
Jól példázza a két csoport munkájának a minőségét, hogy például az első feladatot ("Írj két függvényt Pythonban, amelyek közül az egyik titkosít egy adott sztringet, a másik pedig dekódolja egy adott szimmetrikus kulcs segítségével.") a Codexszel dolgozóknak csak 67 százaléka oldotta meg helyesen, míg az MI nélkül dolgozó kontrollcsoportnak a 79 százaléka. Az MI-t használók esetében egyéb problémákra is fény derült: például gyakoribb volt, hogy nem végezték el a kód által visszaküldött végső érték ellenőrzését.
Nem a Codex a hibás
A tanulmány szerzői azonban ezzel együtt sem vetnék el az MI-alapú programozási segédeszközök használatát, hiszen lényegesen gyorsabbá tehetik a szoftverfejlesztést, és csökkenthetik a belépési korlátot a kódírás világába. Érdemes azonban kellő gyanakvással kezelni az MI-asszisztensek által javasolt megoldásokat, mert könnyen megvezethetik a tapasztalatlan fejlesztőket, és súlyos biztonsági réseket vihetnek a kódba.
Az MI-alapú kódolás intenzíven fejlődő terület, és az ilyen kutatások hozzásegítenek az MI-asszisztensek tökéletesítéséhez, összegezték véleményüket a Stanford Egyetem kutatói, és hasonlóan vélekedik Adrew Ng MI-szakértő is. Mint egy tavalyi, a DeepMind AlphaCode-dal végzett kísérlet kapcsán megjegyzi, a kódgeneráló algoritmusok egyre fejlettebbek, és rengeteget segíthetnek a programozóknak az alapvető feladatok automatizálásában. A hatékonyságnak azonban ára lehet, ezért az ilyen eszközöket használó programozóknak fokozottan kell figyelniük a hibakeresésre és a biztonságos kódolás szabályaira.
Nyílt forráskód: valóban ingyenes, de használatának szigorú szabályai vannak