Iako su koristi AI asistenata na radnom mestu i dalje predmet debate, oblast u kojoj se oni najodlučnije usvajaju jeste razvoj softvera. Tu veliki jezički modeli (LLM — Large Language Models) imaju mnoge uloge — od refaktorisanja i dokumentovanja koda do izgradnje čitavih aplikacija. Međutim, tradicionalni problemi informacione bezbednosti u razvoju sada se uvećavaju jedinstvenim ranjivostima AI modela, navodi se u saopštennju kompanije Kaspersky.
Ranjiv AI-generisani kod
Kada LLM generiše kod, on može sadržati bagove ili bezbednosne propuste. Ovi modeli su obučeni na javno dostupnim podacima sa interneta — uključujući hiljade primera nekvalitetnog koda.
Nedavna studija kompanije Veracode pokazala je da vodeći AI modeli danas generišu kod koji se uspešno pretvara u 90% slučajeva. Pre manje od dve godine, taj procenat je bio manji od 20%. Međutim, bezbednost tog koda se nije poboljšala — 45% i dalje sadrži klasične ranjivosti sa OWASP Top-10 liste, bez značajnih promena u poslednje dve godine. Studija je obuhvatila više od stotinu popularnih LLM-ova i fragmenata koda u jezicima Java, Python, C# i JavaScript. Prema Wiz istraživanju, 20% aplikacija razvijenih vibe-kodiranjem sadrži ozbiljne ranjivosti ili greške u konfiguraciji.
Kao primer takvih propusta često se navodi slučaj propasti startapa Enrichlead, kojem je AI definitivno bio krivac. Osnivač se pohvalio na društvenim mrežama da je „100% koda platforme napisao Cursor AI“, uz napomenu da nema „nijedne ručno napisane linije koda“. Samo nekoliko dana nakon lansiranja, otkriveno je da aplikacija sadrži niz početničkih bezbednosnih propusta — koji su omogućavali bilo kome da pristupi plaćenim funkcijama ili menja podatke. Projekat je ugašen nakon što osnivač nije uspeo da dovede kod do prihvatljivog nivoa bezbednosti koristeći Cursor. Ipak, on nije odustao i od tada je pokrenuo nove projekte zasnovane na vibe-kodiranju.
Najčešće ranjivosti u AI-generisanom kodu
Iako AI-potpomognuto programiranje postoji tek godinu-dve, već ima dovoljno podataka da se identifikuju najčešće greške. Tipično su to:
- Nedostatak validacije ulaza, odsustvo sanitizacije korisničkog unosa i druge osnovne greške koje dovode do klasičnih ranjivosti kao što su XSS (Cross-Site Scripting) i SQL injekcija.
- API ključevi i drugi tajni podaci ugrađeni direktno u veb stranicu i vidljivi korisnicima u njenom kodu.
- Autentifikaciona logika implementirana isključivo na klijentskoj strani, u kodu koji se izvršava u pregledaču — što omogućava lako zaobilaženje provera.
- Greške u logovanju — od nedovoljnog filtriranja pri upisu u logove do potpunog izostanka beleženja događaja.
- Previše moćne i opasne funkcije — AI modeli su optimizovani da generišu kod koji najbrže rešava zadatak, ali najkraći put često nije i najsigurniji. Klasičan primer je korišćenje funkcije eval za matematičke operacije nad korisničkim unosom, što otvara mogućnost proizvoljnog izvršavanja koda u aplikaciji.
- Zastarele ili nepostojeće zavisnosti — AI-generisani kod često referencira stare verzije biblioteka, koristi zastarele ili nesigurne API pozive, pa čak pokušava da uveze izmišljene biblioteke. Ovo poslednje je naročito opasno jer napadači mogu kreirati zlonamernu biblioteku sa „uverljivim“ imenom, koju će AI agent uključiti u stvarni projekat.
Kako bezbedno koristiti AI-generisani kod
Nivo rizika koji potiče od AI-generisanog koda može se značajno — iako ne u potpunosti — smanjiti kombinacijom organizacionih i tehničkih mera:
- Uvesti automatsku reviziju AI-generisanog koda u trenutku njegovog pisanja koristeći optimizovane SAST alate (Static Application Security Testing).
- Ugraditi bezbednosne zahteve u sistemske promptove svih AI razvojnih okruženja.
- Iskusni ljudski stručnjaci treba da sprovode detaljne revizije koda, uz podršku specijalizovanih AI alata za analizu bezbednosti radi povećanja efikasnosti.
- Obučiti programere da pišu bezbedne promptove i, šire gledano, pružiti im dubinsku edukaciju o bezbednoj upotrebi AI tehnologija.