Prompt injection: ochrana AI systému, RAG zdrojov a nástrojov

Chráňte AI systém pred prompt injection cez oddelenie pokynov a dát, minimálne oprávnenia, bezpečný retrieval, validáciu nástrojov a testy.

Prompt injection: ochrana AI systému, RAG zdrojov a nástrojov
Stručná odpoveď

Považujte používateľský, dokumentový aj webový obsah za nedôveryhodné dáta. Autoritu pokynov určujte mimo modelu, obmedzte zdroje a nástroje, argumenty validujte a autorizujte na serveri, citlivé akcie potvrďte a tajomstvá modelu vôbec neposkytujte. Priebežne testujte priame aj nepriame útoky a sledujte neobvyklé volania.

Prompt injection vzniká, keď nedôveryhodný obsah skúša zmeniť správanie modelu, odhaliť informácie alebo vyvolať nepovolenú akciu. Pokyn môže napísať používateľ priamo alebo môže byť ukrytý vo webovej stránke, dokumente, e-maile či výsledku nástroja. Jazykový model spracúva všetko ako text, preto samotná veta ignoruj cudzie pokyny nie je úplná ochrana.

Bezpečnosť stojí na architektúre okolo modelu. Systém oddeľuje inštrukcie od dát, minimalizuje načítaný kontext, vynucuje oprávnenia na serveri a obmedzuje nástroje podľa rizika. Citlivá akcia potrebuje validáciu a potvrdenie. Testovanie zahŕňa reťazenie viacerých nevinných krokov, pretože útok nemusí uspieť jednou nápadnou vetou.

Zmapujte priame a nepriame vstupné cesty

Priamy útok prichádza v otázke, chate alebo poli formulára. Nepriamy môže byť v dokumente načítanom cez RAG, tele e-mailu, HTML stránke, názve súboru alebo odpovedi externého API. Spíšte všetky miesta, z ktorých model získava text, a určte ich vlastníka a úroveň dôvery. Interné úložisko nie je automaticky bezpečné pred škodlivým obsahom.

Potom zmapujte možné následky: únik systémového promptu, zobrazenie cudzieho zdroja, zmena parametrov nástroja, odoslanie dát alebo obchádzanie schválenia. Samotné prezradenie pokynu môže byť menej závažné než prístup k tajomstvu, ktoré v ňom nikdy nemalo byť. Prioritu ochrany určujte podľa reálnej schopnosti a dopadu, nie podľa dramatickosti textu.

Oddeľte autoritatívne pokyny od nedôveryhodných dát

Systémové pravidlá a politika nástrojov vznikajú v aplikácii, nie v načítanom dokumente. Zdrojový text označte delimitermi a popisom, že je určený na analýzu. Nikdy mu nedávajte možnosť prepísať rolu alebo bezpečnostný režim. Toto rozlíšenie znižuje riziko, ale model ho nemusí vždy rešpektovať, preto nesmie byť jedinou obrannou vrstvou.

Minimalizujte kontext na pasáže potrebné pre otázku a filtrujte typy obsahu, ktoré systém nepodporuje. HTML spracujte bez aktívnych prvkov, skryté vrstvy a metadáta posúďte osobitne. Automatická sumarizácia cudzieho webu nesmie následne spustiť jeho inštrukcie. Výstup modelu tiež považujte za nedôveryhodný pred vykreslením alebo použitím v ďalšom kroku.

  • inventár všetkých externých a interných textových vstupov
  • jasná hranica systémových pravidiel a analyzovaných dát
  • minimalizovaný kontext bez tajomstiev a nepotrebných údajov
  • bezpečné spracovanie modelového výstupu pred ďalším použitím

Obmedzte nástroje a vynucujte oprávnenia mimo modelu

Model má prístup iba k úzkym nástrojom potrebným na aktuálnu úlohu. Argumenty prejdú schémou, doménovými pravidlami a autorizáciou podľa overenej identity používateľa. Tenant, rolu ani cieľové oprávnenie neurčuje textový výstup. Nástroj na čítanie nemá skrytú možnosť zápisu a všeobecné spúšťanie kódu či ľubovoľnej URL sa nepovoľuje bez výnimočného dôvodu.

Citlivé alebo ťažko vratné akcie vyžadujú náhľad a potvrdenie konkrétnych hodnôt. Limitujte počet volaní, objem dát, čas a reťazenie. Ak dokument prikáže poslať obsah na externú adresu, server cieľ odmietne bez ohľadu na modelové odôvodnenie. Tajomstvá uchovávajte v aplikačnej vrstve a nástroj vracia iba minimum potrebného výsledku.

Chráňte retrieval, citácie a zobrazovanie

RAG filtruje zdroje podľa oprávnenia pred vyhľadaním a zachováva pôvod. Škodlivá pasáž nesmie ovplyvniť výber ďalších zdrojov alebo pravidlá citovania. Pri indexovaní možno označiť typ a dôveru dokumentu, no detekčný filter nie je neomylný. Citlivé kolekcie oddeľte a pri otázke mimo rozsahu ich systém vôbec neprehľadáva.

Generovaný text vykresľujte s bezpečným escapovaním a povoľte iba kontrolovanú sadu formátovania. Odkazy validujte a používateľa upozornite pred odchodom na externý cieľ. Model nemá generovať spustiteľný kód, ktorý aplikácia automaticky vykoná. Citácia sa overí proti skutočnému zdroju a prístupové právo sa skontroluje aj pri jej otvorení.

Testujte útoky a pripravte reakciu

Testovacia sada obsahuje priame požiadavky na obídenie pravidiel, skryté inštrukcie v dokumentoch, falošné systémové správy, manipuláciu citácií, pokus o cudzie identifikátory a reťazenie nástrojov. Testujte rôzne jazyky a formáty. Úspech neznamená iba bezpečnú vetu, ale aj to, že žiadny zakázaný údaj nebol načítaný ani nástroj zavolaný.

Monitorujte zamietnuté autorizácie, nezvyčajné kombinácie nástrojov, objem výstupu a prístup k citlivým kolekciám. Logy nesmú obsahovať uniknuté tajomstvá. Pri podozrení vypnite dotknutý nástroj, odvolajte poverenia, zachovajte bezpečné dôkazy a preskúmajte rozsah. Každý incident sa premietne do testu a architektonickej opravy, nie iba do dlhšieho promptu.

Časté otázky

Vyrieši prompt injection lepší systémový prompt?

Nie sám. Prompt je iba jedna vrstva. Potrebujete minimálne oprávnenia, serverovú autorizáciu, validované nástroje, bezpečný retrieval, potvrdenie akcií a priebežné testovanie.

Môže byť škodlivý pokyn aj v internom dokumente?

Áno. Dokument mohol byť nahraný omylom, kompromitovaný alebo obsahovať citovaný externý text. Každý obsah analyzovaný modelom sa spracúva ako dáta s určenou dôverou.

Má AI systém poznať API kľúče svojich nástrojov?

Nie. Tajomstvá zostávajú v serverovej vrstve, ktorá vykonáva autorizovanú funkciu. Model dostane iba bezpečný výsledok potrebný na pokračovanie úlohy.

Zdroje a ďalšie čítanie

Adam Antoni, web developer
Adam Antoni · Webiant

Web developer zo Spišskej Novej Vsi. Venuje sa WordPressu, WooCommerce, vlastným pluginom, API integráciám, webovým aplikáciám a praktickým AI automatizáciám.

Potrebujete túto tému vyriešiť vo svojom projekte?

Napíšte, čo chcete zlepšiť, s čím dnes bojujete a aký výsledok očakávate. Na úvodnej konzultácii si prejdeme vhodný rozsah a ďalší postup.