Prompt injection je typ útoku, při němž škodlivý nebo neočekávaný text ovlivní chování systému umělé inteligence. Útočník se snaží přimět model, aby ignoroval původní instrukce, vyzradil citlivé informace nebo provedl nežádoucí akci. Riziko je nejvyšší u AI agentů, kteří zpracovávají externí obsah a zároveň mohou používat nástroje, například vyhledávače, e-mail nebo firemní databáze.
Jak prompt injection funguje
Jazykové modely zpracovávají instrukce i běžný text v podobném formátu. Pokud systém nedokáže spolehlivě rozlišit důvěryhodné pokyny od nedůvěryhodného obsahu, může útočník vložit do vstupních dat text, který model přiměje změnit způsob odpovídání nebo vykonávání úkolu.
Taková instrukce může například modelu přikazovat, aby odhalil obsah předchozí konverzace, obešel nastavená omezení nebo místo shrnutí dokumentu provedl jiný úkol. Samotný text však model automaticky neovládá: úspěch útoku závisí také na návrhu aplikace, dostupných oprávněních a způsobu, jakým systém ověřuje požadované akce.
Přímá a nepřímá prompt injection
Přímý útok
Při přímé prompt injection vloží útočník škodlivé instrukce přímo do zprávy určené AI. Může například požádat model, aby ignoroval předchozí pokyny a odpověděl jiným způsobem. Jde o situaci, kterou lze částečně omezit filtrováním vstupů a správným nastavením systémových instrukcí, samotné filtrování však neposkytuje úplnou ochranu.
Nepřímý útok
Nepřímá prompt injection se skrývá v externím obsahu, který model zpracovává při plnění úkolu. Může jít o text na webové stránce, v e-mailu, dokumentu nebo komentáři v databázi. Uživatel například požádá AI o shrnutí souboru, který obsahuje instrukci adresovanou modelu. Pokud agent obsah vyhodnotí jako pokyn místo jako nedůvěryhodná data, může se od původního úkolu odchýlit.
Proč jsou AI agenti vystaveni vyššímu riziku
Běžný chatbot obvykle pouze vytváří textovou odpověď. AI agent však může mít přístup k nástrojům a na základě svých výstupů vykonávat další kroky. Pokud například smí odesílat e-maily, upravovat záznamy nebo vyhledávat v interních systémech, může úspěšná manipulace vést k následkům mimo samotnou konverzaci.
Riziko se zvyšuje zejména tehdy, když agent pracuje s nedůvěryhodnými zdroji, má rozsáhlá oprávnění nebo provádí citlivé operace bez potvrzení uživatele. Výstup modelu proto nelze považovat za bezpečný jen proto, že vznikl automaticky nebo působí přesvědčivě.
Jak riziko prompt injection omezit
- Oddělujte instrukce od dat. Externí dokumenty a obsah z webu označujte jako nedůvěryhodný vstup, nikoli jako zdroj pokynů pro řízení aplikace.
- Omezte oprávnění agentů. Poskytujte jim pouze přístup k nástrojům a datům nezbytným pro konkrétní úkol.
- Vyžadujte potvrzení citlivých akcí. Odeslání zprávy, změnu záznamu nebo zveřejnění obsahu před provedením ověřte samostatným krokem.
- Kontrolujte výstupy i volání nástrojů. Validujte, zda výstup odpovídá očekávanému formátu a zda požadovaná akce odpovídá záměru uživatele.
- Testujte různé scénáře útoku. Bezpečnostní testy by měly zahrnovat přímé i nepřímé instrukce vložené do dokumentů, e-mailů a dalších zdrojů.
Prompt injection nelze spolehlivě vyřešit jediným filtrem ani formulací systémového pokynu. Účinná obrana vyžaduje kombinaci bezpečného návrhu aplikace, omezených oprávnění, kontroly akcí a průběžného testování. Zvláštní pozornost si zaslouží systémy, které propojují jazykové modely s externími daty a nástroji.
