Prompt injection je zraniteľnosť, pri ktorej vstup od používateľa alebo z externého zdroja nechcene zmení správanie jazykového modelu. Organizácia OWASP ju vo svojom zozname rizík pre aplikácie s jazykovými modelmi radí na prvé miesto (LLM01). Súvisí s prompt engineeringom, lebo ukazuje, že pokyn v prompte nestačí ako ochrana.
Aká je priama a nepriama prompt injection?
OWASP rozlišuje dve formy a rovnaké rozdelenie používa aj Anthropic vo svojej dokumentácii.
| Forma | Odkiaľ prichádza škodlivý pokyn | Príklad |
|---|---|---|
| Priama | Priamo od používateľa, ktorý model oslovuje | Používateľ chatbotu napíše, aby ignoroval pôvodné pokyny |
| Nepriama | Z externého obsahu, ktorý model spracuje, napríklad z webovej stránky, e-mailu alebo súboru | Skrytý pokyn v stránke, ktorú model číta pri zhrnutí |
Nepriama forma je dôležitá pri AI agentoch a nástrojoch, ktoré čítajú weby. OpenAI uvádza, že riziko je najväčšie pri agentoch, ktorí majú k dispozícii nástroje.
Aké dopady môže prompt injection mať?
OWASP uvádza tieto možné dôsledky.
- únik údajov alebo systémového promptu
- zmanipulovaný výstup
- neoprávnený prístup k funkciám
- vykonanie príkazov
- ovplyvnenie rozhodnutí
Čím viac oprávnení má AI funkcia, tým väčšie škody môže spôsobiť. OpenAI preto zdôrazňuje, že riziko sa zvyšuje, keď agent dostane prístup k nástrojom.
Ako sa pred prompt injection chránime?
OWASP, OpenAI aj Anthropic odporúčajú viacero vrstiev ochrany. Ani jedna nezaručuje úplné zabezpečenie. OWASP píše, že nie je jasné, či sa prompt injection dá úplne zabrániť, a OpenAI uvádza, že ochrany riziko znižujú, no neodstraňujú ho.
- obmedziť rolu a oprávnenia modelu na minimum
- overovať výstupy v pevne definovanom formáte
- filtrovať vstupy aj výstupy
- oddeliť nedôveryhodný obsah od pokynov, nedôveryhodný text nedávať do správ od vývojára
- pri rizikových akciách vyžadovať schválenie človekom
- používať štruktúrované výstupy a zábrany (guardrails), ktoré ale nie sú neomylné
- podľa Anthropic nedôveryhodný obsah posielať len ako výsledok nástroja, označiť jeho pôvod a zapísať ho ako JSON
- podľa Anthropic v systémovom prompte výslovne uviesť, že obsah z nástrojov a dokumentov nikdy neprepíše pokyny
- pravidelne testovať odolnosť a vyhodnocovať výsledky
Čím sa líši od SQL injection?
Názvy sú podobné, ale cieľ je iný. SQL injection zneužíva nevalidovaný vstup na ovplyvnenie databázového dotazu. Prompt injection pôsobí na to, ako model chápe pokyny. Model nevie spoľahlivo rozlíšiť pokyn od údajov, ktoré má spracovať, a preto sa dá ovplyvniť aj textom z externého zdroja. Ide o náš výklad rozdielu.
Čo si zapamätať o pojme Prompt injection?
Prompt injection je zneužitie modelu pomocou škodlivých pokynov vo vstupe, či už priamo od používateľa alebo nepriamo z externého obsahu. Úplná ochrana nie je zaručená, preto obmedzujeme oprávnenia modelu, kontrolujeme výstupy a rizikové akcie necháme na schválenie človekom.
Ako to rieši webstrankanamieru.sk: Ak na webe nasadzujeme AI funkcie, napríklad chatbota, vychádzame z odporúčaní OWASP, teda obmedzené oprávnenia, kontrola výstupov a schvaľovanie rizikových akcií. O možnostiach AI integrácie na webe a bezpečnosti sa môžeme porozprávať na bezplatnej konzultácii cez kontakt.
Súvisiace pojmy: Prompt, Prompt engineering, LLM, AI agent, AI integrácia na webe, SQL injection, Bezpečnostný audit webu, Halucinácia AI, Generatívna AI
Často kladené otázky o pojme Prompt injection
Čo je prompt injection?
Aký je rozdiel medzi priamou a nepriamou prompt injection?
Dá sa prompt injection úplne zabrániť?
Prečo je to dôležité pri AI agentoch?
Ako sa chránime pri AI chatbote na webe?
Zdroje
- OWASP GenAI Security Project: LLM01 Prompt InjectionDefinícia, priama a nepriama forma, dopady a opatrenia.
- OpenAI: Safety in building agentsNedôveryhodný text, riziko pri agentoch s nástrojmi a odporúčané ochrany.
- Anthropic: Mitigate jailbreaks and prompt injectionsPriama a nepriama prompt injection, zaobchádzanie s nedôveryhodným obsahom a testovanie vlastného agenta.