OWASP Top 10 za LLM aplikacije popis je deset najvažnijih sigurnosnih rizika koji se pojavljuju u aplikacijama izgrađenim nad velikim jezičnim modelima. Objavila ga je radna skupina projekta OWASP, ista zajednica koja godinama održava OWASP Top 10 za web aplikacije.1 Popis postoji jer LLM sustavi otvaraju razred problema koje klasične liste ranjivosti ne pokrivaju. Model prima ulaz u prirodnom jeziku, ponaša se nedeterministički i sve češće dobiva pravo da poziva alate i pokreće radnje. Te tri osobine mijenjaju površinu napada i traže zasebnu referencu.
Za regulirane tvrtke u Hrvatskoj, u financijama, zdravstvu, kritičnoj infrastrukturi i SaaS-u, to nije akademsko pitanje. Chatbot za korisnike, asistent koji pretražuje internu bazu znanja ili agent koji obrađuje zahtjeve danas rukuju osobnim i poslovnim podacima. Kada takav sustav procuri povjerljivi sadržaj ili izvede radnju koju nije smio, posljedice padaju pod GDPR i nadzor AZOP-a, a kod ključnih subjekata i pod obveze iz Zakona o kibernetičkoj sigurnosti. OWASP popis daje zajednički jezik da se ti rizici imenuju prije nego što sustav ode u produkciju.
Ovaj tekst dio je našeg pregleda sigurnosti AI sustava. Procjenu prema OWASP popisu pružamo kroz sigurnost umjetne inteligencije.
Zašto LLM aplikacije trebaju zaseban popis
Klasični OWASP Top 10 pretpostavlja aplikaciju s definiranim ulazima, pravilima i kodom koji ih provodi. LLM aplikacija ruši tu pretpostavku. Ulaz je tekst na prirodnom jeziku, a model ne razlikuje pouzdano uputu programera od upute koju mu pošalje napadač. Isti kanal nosi i podatke i naredbe, pa granica koju kod inače čvrsto drži ovdje postaje mutna.
Druga razlika je nedeterminizam. Isti upit može dati različite odgovore, pa se sigurnost ne može dokazati jednom testnom serijom kao kod determinističkog koda. Treća je rastuća autonomija. Moderne aplikacije daju modelu alate, pristup bazama i pravo da pozove vanjske usluge, što znači da pogreška modela više nije samo loš tekst, nego stvarna radnja u sustavu. OWASP popis odgovara na te tri osobine i daje praktičnu polaznu referencu, ne zakon i ne certifikat.
Svih deset rizika s obranom
Sljedeća tablica prolazi kroz svih deset kategorija OWASP popisa za LLM aplikacije.1 Za svaku navodi što rizik znači u praksi i koju obranu primjenjujemo. Popis se s razvojem područja mijenja, ali srž rizika ostaje stabilna.
| Rizik | Opis | Obrana |
|---|---|---|
| Injekcija prompta | Ulaz korisnika ili vanjskog izvora mijenja ponašanje modela i zaobilazi zadana pravila. | Odvojite sustavne upute od korisničkog sadržaja, ograničite ovlasti i provjeravajte izlaz, ne oslanjajte se samo na tekst prompta. |
| Nesigurno rukovanje izlazom | Aplikacija slijepo vjeruje tekstu modela i prosljeđuje ga u preglednik, bazu ili shell. | Tretirajte izlaz modela kao nepouzdan ulaz, kodirajte ga i validirajte prije svake daljnje upotrebe. |
| Trovanje podataka za treniranje | Zlonamjeran sadržaj u podacima za učenje, fino podešavanje ili bazu znanja iskrivljuje ponašanje modela. | Provjeravajte porijeklo podataka, ograničite tko može pisati u izvore i pratite promjene u skupovima. |
| Uskraćivanje usluge modela | Skupi ili masovni upiti troše resurse, ruše dostupnost ili stvaraju nekontroliran trošak. | Postavite ograničenja brzine, kvote po korisniku i kontrolu duljine ulaza i izlaza. |
| Ranjivosti opskrbnog lanca | Nepouzdani modeli, biblioteke, dodaci ili skupovi podataka trećih strana unose rizik. | Vodite popis komponenti, koristite provjerene izvore i nadzirite ranjivosti ovisnosti. |
| Otkrivanje osjetljivih informacija | Model u odgovoru otkrije povjerljive, osobne ili interne podatke. | Filtrirajte ulaz i izlaz, ograničite što model uopće vidi i provodite GDPR načelo najmanjeg pristupa. |
| Nesiguran dizajn dodataka | Dodaci i alati s preširokim ulazima i ovlastima omogućuju napadaču zlouporabu kroz model. | Strogo tipizirajte parametre alata, provjeravajte ovlasti pozivatelja i validirajte svaki poziv. |
| Prekomjerna agencija | Model ili agent smiju pokretati radnje šire nego što zadatak traži, primjerice brisati ili plaćati. | Dajte najuži skup ovlasti, tražite ljudsku potvrdu za rizične radnje i bilježite svaki poziv alata. |
| Prevelika ovisnost | Ljudi prihvaćaju izlaz modela bez provjere, uključujući izmišljene činjenice i kod. | Označite ograničenja modela, dodajte provjeru i izvore te tražite ljudski nadzor za važne odluke. |
| Krađa modela | Neovlašten pristup težinama modela, vlasničkim promptovima ili njihovo izvlačenje upitima. | Kontrolirajte pristup modelu, štitite tajne sustavne upite i pratite obrasce koji ukazuju na izvlačenje. |
Injekcija prompta i nesigurno rukovanje izlazom
Injekcija prompta najpoznatiji je rizik s popisa i u praksi najčešći ulaz napadača. Napadač u tekst ugradi uputu koja preusmjeri model, primjerice da zanemari prethodna pravila ili da otkrije sustavni prompt. Posebno je opasna neizravna varijanta, kada zlonamjerna uputa dolazi iz dokumenta, web stranice ili e-pošte koju model čita kao dio zadatka. Detaljnije je obrađujemo u tekstu o prompt injectionu.
Nesigurno rukovanje izlazom je njegov prirodni nastavak. Ako aplikacija uzme tekst modela i ubaci ga u HTML, SQL upit ili sistemski poziv bez provjere, model postaje vektor za klasične napade poput XSS-a ili injekcije naredbi. Ovdje se LLM rizik spaja sa sigurnošću web aplikacija: izlaz modela treba tretirati jednako oprezno kao bilo koji drugi nepouzdan ulaz.
Prekomjerna agencija i nesiguran dizajn dodataka
Čim model dobije alate, rizik se seli iz teksta u radnju. Prekomjerna agencija nastaje kada agent smije više nego što zadatak traži, primjerice slati e-poštu, mijenjati zapise u bazi ili pokretati plaćanja, a sve to na temelju ulaza kojem ne treba vjerovati. Spojite li to s injekcijom prompta, napadač kroz tekst može pokrenuti stvarnu štetnu radnju.
Nesiguran dizajn dodataka je tehnička strana istog problema. Alat koji prima slobodan tekst umjesto strogo tipiziranih parametara, ili koji ne provjerava ovlasti pozivatelja, otvara model za zlouporabu. Obrana je dosljedna: najuži skup ovlasti, stroga validacija svakog poziva alata i ljudska potvrda za nepovratne radnje. Tu temu razrađujemo u tekstu o sigurnosti AI agenata.
Podaci, opskrbni lanac i krađa modela
Trovanje podataka za treniranje cilja na izvor iz kojeg model uči. Zlonamjeran sadržaj u skupu za fino podešavanje ili u bazi znanja koju RAG sustav pretražuje može iskriviti odgovore ili ugraditi skrivene obrasce. Otkrivanje osjetljivih informacija povezano je s tim: ako model vidi više nego što smije, prije ili kasnije će to izložiti u odgovoru, što kod osobnih podataka izravno aktivira GDPR i nadzor AZOP-a.
Ranjivosti opskrbnog lanca tiču se modela, biblioteka, dodataka i skupova podataka trećih strana. Preuzeti model nepoznatog porijekla ili ranjiva ovisnost unose rizik prije nego što napišete ijedan redak vlastite logike, pa vrijede ista načela kao u DevSecOpsu: popis komponenti i nadzor ranjivosti. Uskraćivanje usluge modela troši resurse i stvara trošak masovnim ili skupim upitima, a krađa modela odnosi se na neovlašten pristup težinama, vlasničkim promptovima ili njihovo izvlačenje sustavnim upitima.
Sigurnost LLM aplikacije ne počiva na promptu, nego na arhitekturi koja pretpostavlja da će prompt zakazati.
Koji su rizici najopasniji u praksi
Svih deset kategorija vrijedi razmotriti, ali u stvarnim projektima istaknu se tri. Injekcija prompta je najčešći ulaz i temelj većine napada na LLM aplikacije. Otkrivanje osjetljivih informacija nosi najveću regulatornu i poslovnu cijenu, jer izlazak osobnih ili povjerljivih podataka pokreće obveze prijave i moguće kazne. Prekomjerna agencija je najopasnija kada model ima alate, jer pretvara tekstualnu pogrešku u nepovratnu radnju.
Po našem iskustvu, najveći broj ozbiljnih nalaza dolazi upravo iz spoja tih rizika: neizravna injekcija prompta koja iskoristi agenta s preširokim ovlastima da izvuče ili promijeni podatke. Stvarna procjena ovisi o opsegu, ali pravilo je jednostavno: što više ovlasti dajete modelu, to skuplja postaje svaka od ostalih ranjivosti.
Kako se LLM aplikacije testiraju i brane
Popis je najkorisniji kao kontrolna lista kroz cijeli životni ciklus aplikacije, od dizajna do produkcije. Obrana se ne svodi na jedan alat, nego na slijed koraka koji se ponavlja sa svakom promjenom modela, prompta ili skupa alata.
- 01U dizajnuProđite kroz svih deset kategorija i utvrdite koje vrijede za vaš sustav, posebno koje ovlasti model uopće treba.
- 02U razvojuUgradite najuže ovlasti, strogu validaciju izlaza i provjeru poziva alata. Ne oslanjajte se na sustavni prompt kao granicu.
- 03U testiranjuProtivnički testirajte injekciju prompta, pokušaje curenja podataka i zlouporabu alata, kroz crveni tim za AI sustave.
- 04U raduNadzirite upite i odgovore, postavite kvote i ograničenja brzine te pratite obrasce koji ukazuju na izvlačenje ili zlouporabu.
Protivničko testiranje je ključno jer se LLM ranjivosti rijetko vide u funkcionalnim testovima. Tek kada netko aktivno pokuša zaobići pravila, izvuče skriveni prompt ili natjera agenta na neželjenu radnju, vidi se gdje arhitektura zakaže. Detaljniji okvir rizika LLM i RAG aplikacija dajemo u tekstu o sigurnosti LLM aplikacija.
Veza s klasičnom sigurnošću aplikacija
OWASP popis za LLM ne zamjenjuje klasičnu sigurnost aplikacija, nego se na nju nadovezuje. LLM aplikacija je i dalje web aplikacija s API-jem, bazom, autentikacijom i ovlastima. Sve što vrijedi u OWASP Top 10 za web i dalje vrijedi: kontrola pristupa, validacija ulaza, upravljanje tajnama i sigurna konfiguracija ostaju temelj.
LLM popis dodaje sloj specifičan za model i njegovu autonomiju. U praksi to znači da procjena sigurnosti AI aplikacije pokriva oba sloja: klasične ranjivosti u kodu i infrastrukturi, te rizike vezane uz ponašanje modela, prompt i alate. Tko ih razdvaja, propušta upravo one nalaze koji nastaju na granici dvaju svjetova.
Kako Raptoric pomaže
Procjenjujemo AI aplikacije prema OWASP Top 10 za LLM, protivnički testiramo injekciju prompta i zlouporabu alata te pomažemo zatvoriti rizike u arhitekturi, a ne samo u promptu. Radimo nezavisno i bez vezanosti uz pojedinog dobavljača, kroz sigurnost umjetne inteligencije. Dogovorite uvodni razgovor.
