SG.hu
Jelszavakat is kidob a GitHub Copilot és az Amazon Code Whisperer
A fejlesztőket segítő asszisztensek kérésre hozzáférési tokeneket és API-kulcsokat is megmutatnak. Kutatók olyan programsorok kiegészítését kérték, amelyekből csak a jelszó hiányzott, és az MI-k segítettek befejezni a kódot.
A GitHub Copilot és az Amazon CodeWhisper olyan mesterséges intelligenciát használó általános célú kódgenerátorok, amelyek automatikus kitöltés jellegű javaslatokat kínálnak a programsorokat író fejlesztőknek. Tehát elég elkezdeni írni a kívánt kódot, és ezek a segédek automatikusan javaslatokat generálnak, az egysoros megjegyzésektől a teljesen kialakított függvényekig. Ezeket az MI-asszisztenseket ugyanúgy nagy nyelvi modellek (LLM-ek) hajtják, hatalmas adatbázisokat, kódtárakat és persze az ezeket a segédeket használó emberek kódsorait nyelik el, majd ez alapján következtetik ki, hogy mit szeretne a felhasználó. Azonban a programok sokszor kapcsolódnak adatbázisokhoz, kérnek le adatokat más forrásokból, és így a képzéshez használt adatokban előfordulnak olyan API-kulcsok, hozzáférési tokenek, azonosítók és hasonlók, amelyeknek nem lenne ott semmi keresnivalójuk. Az ilyen titkoknak nem kellene nyilvánosnak lenniük, de mégis felbukkannak néha egy nyilvános kódban, mivel a fejlesztők nem ismerik a megfelelő biztonsági gyakorlatot, vagy nem érdeklődnek iránta.
Öt kíváncsi kínai - név szerint Yizhan Huang, Yichen Li, Weibin Wu, Jianping Zhang és Michael Lyu, akik a The Chinese University of Hong Kong és a Sun Yat-sen University kutatói - direkt ezekre volt kíváncsi. Azt szerették volna megtudni, hogy ezek a segédek rávehetők-e arra, hogy a mesterséges intelligencia képzéséhez használt adatbázisokban lévő védett kódokat is megmutassanak. A válasz nem meglepő módon igen, hiszen enélkül nem lenne az egészből hír. A szerzők létrehoztak egy Hardcoded Credential Revealer (HCR, azaz "Keményen kódolt hitelesítő adatok felfedése") nevű eszközt, amely API-kulcsokat, hozzáférési tokeneket, azonosítókat és hasonlókat keres. A felfedezésből tanulmányt is írtak "Do Not Give Away My Secrets: Uncovering the Privacy Issue of Neural Code Completion Tools (A neurális kódkiegészítő eszközök adatvédelmi problémájának feltárása)" címmel.
Már indultak olyan perek, amelyek szerint az egyik ilyen eszköz, a GitHub Copilot rávehető arra, hogy felfedjen szerzői jogvédelem alatt álló kódokat, és más LLM-ek is hasonló vádakkal néznek szembe a szövegekkel és képekkel kapcsolatban. Így nem lehet teljesen meglepő, hogy az MI kódasszisztensek megfelelően megfogalmazott kérésre más érzékeny dolgokat is elérhetővé tesznek. Mindenképpen problémás dolog, hogy ha valamilyen érzékeny adat bekerül egy LLM képzési készletébe akkor bármikor újra felszínre kerülhet, mert ez elgondolkodtató arra nézve, hogy mi minden lehet még potenciálisan visszafejthető.
"Óvatlan fejlesztők beírhatnak hitelesítő adatokat is a kódbázisokba, és akár nyilvános forráskód-hoszting szolgáltatásokra, például a GitHubra is feltölthetik ezeket" - magyarázzák a szerzők. "Nem egyszerű szivárgásról van szó, 100 ezer tárolóban vannak ilyen hitelesítő adatok és naponta több ezer új, egyedi titkot küldenek el az emberek a GitHubra." A kutatók a mesterséges intelligencia kódkiegészítő eszközeinek szondázásához olyan szabályos kifejezéseket dolgoztak ki, amelyek 18 konkrét karakterlánc-mintát céloztak. Ezekre a mintákra rákeresve a GitHubon rengeteg olyan példakódot találtak, amelyben ezek a minták megjelentek, majd a kulcsok hiányával konstruáltak kéréseket. A modelleket arra kérték, hogy a hiányzó kulcs kitöltésével egészítsék ki a kódrészleteket.
A GitHub Copilot megmondta, hogy mit kell az "aws_key:" mögé írni.
Például megkérték a modellt, hogy töltsön ki egy üres aws_key értéket (ez az Amazon Web Services felhőplatform rövidítése), amit az MI asszisztens meg is tett, majd ezt követően az informatikusok validálták a válaszokat. "A Copilot 8127 javaslata közül 2702 érvényes jelszót sikerült kinyerni" - áll a kutatók közleményében. "Az általános érvényes arány tehát 2702/8127 = 33,2 százalék, ami azt jelenti, hogy a Copilot átlagosan 2702/900 = 3 érvényes titkot generál egy felszólításra. A CodeWhisperer összesen 736 kódrészletet javasolt, amelyek között 129 érvényes titkot azonosítottunk. Az érvényes arány tehát 129/736 = 17,5 százalék." Az "érvényes" szó olyan titkokra utal, amelyek megfelelnek az előre meghatározott formázási kritériumoknak, az azonosított, "működő" titkok száma pedig olyan értékek, amelyek jelenleg aktívak, és amelyekkel élő API-szolgáltatáshoz lehet hozzáférni.
Etikai megfontolások miatt a szerzők nem próbáltak olyan hitelesítő adatokat ellenőrizni, amelyek komoly adatvédelmi kockázatokkal járnak, mint például élő fizetési API-kulcsok, viszont megnézték a sandbox környezetekhez kapcsolódó ártalmatlan kulcsok egy részhalmazát. Megerősítették, hogy a két modell pontosan megjegyzi és kiadja a kulcsokat. A 2702 érvényes GitHub-kulcs közül 103, azaz 3,8 százalék volt az a kulcs, amelyet a kódkitöltési felszólítás létrehozásához használt kódmintából távolítottak el. A CodeWhispererből származó 129 érvényes kulcs közül pedig 11, azaz 8,5 százalék volt a kivágott kulcsok pontos másolata. "Megfigyelhető, hogy a GitHub Copilot és az Amazon CodeWhisperer nemcsak az oktató kódban lévő eredeti titkokat képes kibocsátani, hanem olyan új titkokat is javasol, amelyek nem szerepelnek a tréningezéshez használt kódban" - állapítják meg a kutatók.
A kínai kutatók megállapították, hogy az MI-asszisztensek komoly adatvédelmi kockázatot jelentenek. A GitHub elismerte ezt a tényt, de nem tartják magukat hibásnak. "A GitHub Copilotot úgy tervezték, hogy a lehető legjobb kódot generálja, figyelembe véve a kontextust, amihez hozzáfér. Mivel a GitHub Copilotot működtető modellt nyilvánosan elérhető kódon képezték ki, a képzési készlet tartalmazhat bizonytalan kódolási mintákat, hibákat, illetve hivatkozásokat elavult API-kra vagy idiómákra" - nyilatkozta a GitHub szóvivője. "Bizonyos esetekben a modell személyesnek tűnő adatokat javasolhat, de ezek a javaslatok fiktív információk, amelyeket a képzési adatok mintáiból szintetizáltak. Amikor a GitHub Copilot ezen adatok alapján kódjavaslatokat szintetizál, akkor olyan kódot is szintetizálhat, amely ezeket a nemkívánatos mintákat tartalmazza. 2023 márciusától elindítottunk egy mesterséges intelligencia alapú sebezhetőség-megelőző rendszert, amely valós időben blokkolja a nem biztonságos kódmintákat, hogy biztonságosabbá tegyük a GitHub Copilot javaslatokat. Modellünk a leggyakoribb sebezhető kódolási mintákat veszi célba, beleértve a kódolt hitelesítő adatokat és az SQL-injekciókat. Természetesen a GitHub Copilotot mindig a jó tesztelési és kódellenőrzési gyakorlatokkal és biztonsági eszközökkel, valamint a saját ítélőképességünkkel együtt kell használni."
A GitHub Copilot és az Amazon CodeWhisper olyan mesterséges intelligenciát használó általános célú kódgenerátorok, amelyek automatikus kitöltés jellegű javaslatokat kínálnak a programsorokat író fejlesztőknek. Tehát elég elkezdeni írni a kívánt kódot, és ezek a segédek automatikusan javaslatokat generálnak, az egysoros megjegyzésektől a teljesen kialakított függvényekig. Ezeket az MI-asszisztenseket ugyanúgy nagy nyelvi modellek (LLM-ek) hajtják, hatalmas adatbázisokat, kódtárakat és persze az ezeket a segédeket használó emberek kódsorait nyelik el, majd ez alapján következtetik ki, hogy mit szeretne a felhasználó. Azonban a programok sokszor kapcsolódnak adatbázisokhoz, kérnek le adatokat más forrásokból, és így a képzéshez használt adatokban előfordulnak olyan API-kulcsok, hozzáférési tokenek, azonosítók és hasonlók, amelyeknek nem lenne ott semmi keresnivalójuk. Az ilyen titkoknak nem kellene nyilvánosnak lenniük, de mégis felbukkannak néha egy nyilvános kódban, mivel a fejlesztők nem ismerik a megfelelő biztonsági gyakorlatot, vagy nem érdeklődnek iránta.
Öt kíváncsi kínai - név szerint Yizhan Huang, Yichen Li, Weibin Wu, Jianping Zhang és Michael Lyu, akik a The Chinese University of Hong Kong és a Sun Yat-sen University kutatói - direkt ezekre volt kíváncsi. Azt szerették volna megtudni, hogy ezek a segédek rávehetők-e arra, hogy a mesterséges intelligencia képzéséhez használt adatbázisokban lévő védett kódokat is megmutassanak. A válasz nem meglepő módon igen, hiszen enélkül nem lenne az egészből hír. A szerzők létrehoztak egy Hardcoded Credential Revealer (HCR, azaz "Keményen kódolt hitelesítő adatok felfedése") nevű eszközt, amely API-kulcsokat, hozzáférési tokeneket, azonosítókat és hasonlókat keres. A felfedezésből tanulmányt is írtak "Do Not Give Away My Secrets: Uncovering the Privacy Issue of Neural Code Completion Tools (A neurális kódkiegészítő eszközök adatvédelmi problémájának feltárása)" címmel.
Már indultak olyan perek, amelyek szerint az egyik ilyen eszköz, a GitHub Copilot rávehető arra, hogy felfedjen szerzői jogvédelem alatt álló kódokat, és más LLM-ek is hasonló vádakkal néznek szembe a szövegekkel és képekkel kapcsolatban. Így nem lehet teljesen meglepő, hogy az MI kódasszisztensek megfelelően megfogalmazott kérésre más érzékeny dolgokat is elérhetővé tesznek. Mindenképpen problémás dolog, hogy ha valamilyen érzékeny adat bekerül egy LLM képzési készletébe akkor bármikor újra felszínre kerülhet, mert ez elgondolkodtató arra nézve, hogy mi minden lehet még potenciálisan visszafejthető.
"Óvatlan fejlesztők beírhatnak hitelesítő adatokat is a kódbázisokba, és akár nyilvános forráskód-hoszting szolgáltatásokra, például a GitHubra is feltölthetik ezeket" - magyarázzák a szerzők. "Nem egyszerű szivárgásról van szó, 100 ezer tárolóban vannak ilyen hitelesítő adatok és naponta több ezer új, egyedi titkot küldenek el az emberek a GitHubra." A kutatók a mesterséges intelligencia kódkiegészítő eszközeinek szondázásához olyan szabályos kifejezéseket dolgoztak ki, amelyek 18 konkrét karakterlánc-mintát céloztak. Ezekre a mintákra rákeresve a GitHubon rengeteg olyan példakódot találtak, amelyben ezek a minták megjelentek, majd a kulcsok hiányával konstruáltak kéréseket. A modelleket arra kérték, hogy a hiányzó kulcs kitöltésével egészítsék ki a kódrészleteket.
A GitHub Copilot megmondta, hogy mit kell az "aws_key:" mögé írni.
Például megkérték a modellt, hogy töltsön ki egy üres aws_key értéket (ez az Amazon Web Services felhőplatform rövidítése), amit az MI asszisztens meg is tett, majd ezt követően az informatikusok validálták a válaszokat. "A Copilot 8127 javaslata közül 2702 érvényes jelszót sikerült kinyerni" - áll a kutatók közleményében. "Az általános érvényes arány tehát 2702/8127 = 33,2 százalék, ami azt jelenti, hogy a Copilot átlagosan 2702/900 = 3 érvényes titkot generál egy felszólításra. A CodeWhisperer összesen 736 kódrészletet javasolt, amelyek között 129 érvényes titkot azonosítottunk. Az érvényes arány tehát 129/736 = 17,5 százalék." Az "érvényes" szó olyan titkokra utal, amelyek megfelelnek az előre meghatározott formázási kritériumoknak, az azonosított, "működő" titkok száma pedig olyan értékek, amelyek jelenleg aktívak, és amelyekkel élő API-szolgáltatáshoz lehet hozzáférni.
Etikai megfontolások miatt a szerzők nem próbáltak olyan hitelesítő adatokat ellenőrizni, amelyek komoly adatvédelmi kockázatokkal járnak, mint például élő fizetési API-kulcsok, viszont megnézték a sandbox környezetekhez kapcsolódó ártalmatlan kulcsok egy részhalmazát. Megerősítették, hogy a két modell pontosan megjegyzi és kiadja a kulcsokat. A 2702 érvényes GitHub-kulcs közül 103, azaz 3,8 százalék volt az a kulcs, amelyet a kódkitöltési felszólítás létrehozásához használt kódmintából távolítottak el. A CodeWhispererből származó 129 érvényes kulcs közül pedig 11, azaz 8,5 százalék volt a kivágott kulcsok pontos másolata. "Megfigyelhető, hogy a GitHub Copilot és az Amazon CodeWhisperer nemcsak az oktató kódban lévő eredeti titkokat képes kibocsátani, hanem olyan új titkokat is javasol, amelyek nem szerepelnek a tréningezéshez használt kódban" - állapítják meg a kutatók.
A kínai kutatók megállapították, hogy az MI-asszisztensek komoly adatvédelmi kockázatot jelentenek. A GitHub elismerte ezt a tényt, de nem tartják magukat hibásnak. "A GitHub Copilotot úgy tervezték, hogy a lehető legjobb kódot generálja, figyelembe véve a kontextust, amihez hozzáfér. Mivel a GitHub Copilotot működtető modellt nyilvánosan elérhető kódon képezték ki, a képzési készlet tartalmazhat bizonytalan kódolási mintákat, hibákat, illetve hivatkozásokat elavult API-kra vagy idiómákra" - nyilatkozta a GitHub szóvivője. "Bizonyos esetekben a modell személyesnek tűnő adatokat javasolhat, de ezek a javaslatok fiktív információk, amelyeket a képzési adatok mintáiból szintetizáltak. Amikor a GitHub Copilot ezen adatok alapján kódjavaslatokat szintetizál, akkor olyan kódot is szintetizálhat, amely ezeket a nemkívánatos mintákat tartalmazza. 2023 márciusától elindítottunk egy mesterséges intelligencia alapú sebezhetőség-megelőző rendszert, amely valós időben blokkolja a nem biztonságos kódmintákat, hogy biztonságosabbá tegyük a GitHub Copilot javaslatokat. Modellünk a leggyakoribb sebezhető kódolási mintákat veszi célba, beleértve a kódolt hitelesítő adatokat és az SQL-injekciókat. Természetesen a GitHub Copilotot mindig a jó tesztelési és kódellenőrzési gyakorlatokkal és biztonsági eszközökkel, valamint a saját ítélőképességünkkel együtt kell használni."