Kako AI-generisani kod menja sajber bezbednost — i šta programeri i tzv. „vibe kod“ entuzijasti
treba da očekuju.
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.
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.