Myslitelé
Útok Prompt Injection, Který Nelze Předejít: Přání nebo Skutečná Starost?

V tomto článku bych vás chtěl vyzvat k zamyšlení nad myšlenkovým experimentem. Budu argumentovat, že v blízké budoucnosti bude určitý typ útoku prompt injection prakticky nezastavitelný. Můj argument bude více spekulativní než konkrétní, takže se nesnažím vás o něčem přesvědčit. Místo toho vás pozvu, abyste prozkoumali tyto myšlenky. Předtím, než začnu, jako každý přesvědčivý spisovatel, chci diskutovat o šachu a šachových engenech.
Nadlidské Šachové Enginy a Tvrdnutí o Lidské Zkušenosti
Jedním z hezčích prvků šachu, který chybí v jiných disciplínách, je schopnost objektivně měřit kvalitu nebo sílu hráče. Systém ELO hodnocení používaný pro tento účel má své nedostatky, ale poskytuje velmi dobré hrubé odhady, které drží přes čas. Hodnocení 2700 nebo vyšší je obecně uznáváno jako světová třída (top 30 na světě). Nejlepší hráč na světě je právě pod 2850. Žádný člověk nikdy nedosáhl hodnocení 2900.
V polovině 90. let jsme viděli první AI engine (Deep Blue), který dosáhl světové třídy. Praktickým důsledkem tohoto milníku byla široká adopce engineů hráči všech úrovní pro cvičení a analýzu. Ve skutečnosti se použití engineů stalo nezbytným pro nejlepší hráče na světě. Avšak pro několik generací těchto světových engineů bylo přezkoumání jejich doporučených tahů (tj. výstupu) nezbytné. Byla dokonce vytvořena speciální forma nazvaná „pokročilý šach“, ve které hráči soutěžili s engine po své straně, a kombinace lidského a strojového byla považována za lepší než stroj sám.
Trvalo to asi 20 let a einige kritické pokroky v Deep Learning a Reinforcement Learning pro šachové enginy, aby dosáhly nadlidské úrovně (přibližně 3200 ELO). Ale jednou, co byla tato hranice prolomena kolem roku 2017, stalo se něco velmi překvapivého. Ve skutečnosti se stalo dvě věci. První věc byla zcela očekávaná; enginy se staly de facto zdrojem „skutečné pravdy“ ve 99 % všech pozic. V praxi to znamenalo, že jsme vstoupili do „éry slepé důvěry“ v engine. Dnes je prakticky nemožné, aby člověk navrhl významně lepší tah než engine. Jak zábavné bylo „pokročilé šachy“, je nyní zbytečným cvičením; lidé by téměř nic nepřispěli do hry. Ale druhá věc byla šokující pro většinu šachistů. Tyto nadlidské neuronové (tj. hluboké neuronové sítě) enginy někdy hrály stylem, který lze nejlépe popsat jako „romantický“. Jinými slovy, dělali tahy, jejichž hodnota mohla být oceněna až mnoho tahů později, daleko za tím, co mohl vypočítat člověk nebo světový engine. To velmi připomínalo, jako by enginy vyvinuly „pocit“ nebo „intuici“ pro určité pozice. Kromě toho tato intuice není něčím, co by mohl člověk kdykoli pochopit nebo napodobit.
Řečeno jinak, nadlidský neuronový engine může dělat tahy, které jsou za kognitivním horizontem člověka. To je kritický bod; problém není ve vysvětlitelnosti. Spíše, člověk prostě nemůže pochopit, proč engine doporučuje tah bez sehrání pozice a pozorování výsledku mnoha tahů později, tj. rozvinutí celé trajektorie možných herních sekvencí. Jako výsledek, máme nesmírnou mezeru v schopnostech. Je optimální akceptovat výstup engine bez přezkumu. Mohu shrnout své tvrzení takto:
Šach je důkazem existence, že nadlidský AI bude účinně fungovat autonomně v některých doménách. Umožnění AI systému, aby dělal rozhodnutí bez lidského přezkumu, by bylo optimálním způsobem nasazení takového systému.
Pоскольку mé tvrzení může někoho zasáhnout jako zjevné nebo nezajímavé, chci zdůraznit několik nuancí. Předpokládejme, že máme AI systém, který prokazuje nadlidskou úroveň v komplexní, kritické úloze s konkrétními, nezvratitelnými důsledky. Existují dvě implikace mého tvrzení:
- Systém by byl nasazen k dělání rozhodnutí pro úlohu bez lidského přezkumu, navzdory inherentnímu riziku
- Pochopení získané z monitorování takového systému by nezabránilo škodlivému rozhodnutí; škoda by již byla způsobena
Přezkum výstupu a monitorování jsou přesně poslední dvě vrstvy obrany proti útoku prompt injection. Naše hypotetický útok prompt injection by mohl tyto vrstvy obejít jednoduše tím, že bude cílit na příslušný systém.
To je velmi realistické scénáře v mém myšlení. Nadlidský AI systém v konkrétní doméně není AGI, a většina odborníků se domnívá, že takové systémy jsou hned za rohem. Nemuseli jsme předpokládat, že rozhodnutí jsou časově kritická, pouze to, že úloha je dostatečně komplexní, aby lidský přezkum byl neřešitelný.
Samozřejmě, že jsme dosud obešli pouze dvě vrstvy obrany, a šťastně pro nás, byly vyvinuty další. Abychom se vypořádali se zbytkem, pojďme se ponořit do základních prvků, které činí prompt injection obtížným na obranu.
Co je Prompt Injection?
Prompt injection je manipulace Large Language Model (LLM) prostřednictvím vytvořených vstupů, což způsobí, že LLM nevědomky provede úmysly útočníka. Může být považováno za sociální inženýrství pro AI. Kriticky, není to konvenční software bug. Útok prompt injection využívá vrozenou zranitelnost LLM. Protože LLM zpracovávají systémové i uživatelské prompty jako textové sekvence, nemohou vnitřně rozlišovat mezi legálními a škodlivými instrukcemi. Zranitelnost je proto efektivní, spíše než náhodná.
Techniky Prompt Injection
Prompt injection je obecně uznáváno jako #1 riziko pro LLM aplikace. Existuje několik důvodů, proč je tomu tak. Nejběžnější faktor je různorodost injekčních technik, které byly vyvinuty. Přibližně seskupené do čtyř kategorií, nejznámější techniky zahrnují:
- Syntax-based: použití speciálních znaků, emotikon, nebo alternativního jazyka
- Indirect: použití externích zdrojů (načtení ze stránky), kódování (base 64), nebo multimodálního odkazu (text v obrázku)
- “Let’s Pretend”: zavedení manipulativního stylu, například hraní rolí, hypotetických, emocionálních apelů, etických rámců a formátování
- Blunt: explicitní pokus „silou“ modelu instrukcí pomocí brute-force, posílení, nebo negativního promptu
Různorodost sama o sobě představuje výzvu pro vývojáře aplikací, ale tyto útoky se také rychle vyvíjejí. Levá strana diagramu níže tvrdí, že popisuje stav umění pro začátek roku 2023, zatímco pravá strana odráží povahu útoků dnes.

Vývojáři LLM aplikací musí také vzít v úvahu standardní tradeoff mezi uživatelskou přívětivostí a bezpečností. Mohli by certainly zavést každou příslušnou obrannou vrstvu a designový vzor, ale za jakou cenu? Obranné vrstvy přidávají významné zpoždění a zavádějí falešně pozitivní výsledky (FP) – nesprávně označují bezpečné prompty jako škodlivé – oba faktory mají negativní dopad na uživatelský zážitek. Jako výsledek, jistá úroveň kompromisu je nevyhnutelná v praxi, a neexistuje „stříbrná kulka“ řešení.
Nicméně, v tomto článku, nejsem opravdu intéressován touto nekonečnou hrou kočky a myši. Spíše, zkoumám, zda útok může být nezastavitelný v principu. Z pohledu vývojáře/obránce, existuje pouze jeden klíčový vhled:
Oddělení instrukcí od dat v promptu je zásadní pro řešení rizika prompt injection
Můžeme předpokládat, že kompromisy nejsou faktorem, a každá obranná vrstva nebo technika může být použita. Pod touto (silnou) předpokladem, je možné vytvořit scénář, ve kterém oddělení instrukcí a dat v promptu je efektivní nemožné?
Analógia DNA
Jednou, co byla otázka formulována v termínech oddělení instrukcí a dat, moje první myšlenka byla použít biologii jako analógii.
Přemýšlejte o buňce a úseku DNA (známém jako gen). Gen poskytuje instrukce pro stavbu proteinu prostřednictvím transkripce a translace. Také kóduje informace (data), které ovlivňují strukturu a funkci proteinu. Jako takový, gen současně diktuje, co postavit, a jak to postavit, nebo tak jsem usoudil. Avšak, to je prostě falešné, protože gen nerozhoduje, jak interpretovat sám sebe. Není ekvivalentu následování instrukcí v biologii na úrovni genu. „Jak“ je plně externalizováno do buněčné mašinérie.
Proto, i když nemohu setředit pocit, že budoucí generace LLM – nebo přesněji, systémy, do kterých se vyvinou – budou připomínat biologické stroje mnohem více, navrhovaná analógia prostě nefunguje. Nemůžeme nahradit buňku LLM a gen promptem a pak provést injekci do genu, která by nakonec způsobila „poškozený“ protein; vypadá to produktivněji, aby zůstal u přirozeného jazyka a úkolů, které vyžadují semantickou interpretaci.
Odstraňování Vrstev Obrany
Nemělo by být překvapující, že vícevrstvé strategie obrany jsou považovány za účinnější při zastavování útoků prompt injection. Obrázek níže ukazuje nejčastější obranné vrstvy v pořadí a přidružené techniky používané v každé vrstvě.

Už jsme diskutovali o posledních dvou vrstvách (výstup, monitorování) výše, takže se zaměřme na první čtyři.
Při zvažování vstupní vrstvy, je rozumné předpokládat, že sanitizace nebo validace promptu by byla quite úspěšná v detekci indirect útoků. Avšak, pokud je injekce dodána přímo, a jak je navrhnuto výše, spoléhající se na semantickou interpretaci, snad sanitizace je irelevantní (ničeho sanitizovat), a validace je nemožná výchozí, protože výpočet musí být dokončen, aby identifikoval problém.
Existuje prakticky žádný limit pro konstrukci zábran v detekční vrstvě. Ve skutečnosti, můžete dokonce použít dedikovaný LLM pro injekční detekci. Ale opět, bude obtížné pro klasifikátor nebo detektor anomálií, aby označil prompt jako podezřelý, když je jedovatina chytrým způsobem skrytá v rámci sémantiky.
Modelová vrstva může být velmi efektivní, když je rozsah úkolů úzký a fine-tuning je proveditelný. Podobný argument může být učiněn pro systémovou vrstvu, když je použití nástrojů předvídatelné. Avšak, alespoň intuitivně, ani jeden by nevyvolal poplach, kdyby injekce vyhodila interpreter.
Dům Karet
Mým záměrem, když jsem začal psát tento článek, bylo popsat „nezastavitelný“ útok prompt injection v širokých obrysech. Možná jsem skončil následujícím „nekonstruktivním“ přístupem, kdy jsem dělal díry do stávajících vrstev obrany. Obranné techniky pokračují v rychlém vývoji, a tak i útočný povrch. Tato hra neukazuje žádné známky konce. Avšak, také věřím, že nebudeme hrát tuto hru dlouho. Myslím, že úspěšný útok prompt injection v budoucnosti bude stále v přirozeném jazyce, ale v jazyce, který lidé nemohou pochopit; a myslím, že bude auto-objeven pomocí systému, který je buď postaven pro tento konkrétní účel, nebo možná náhodou po řešení související úkolu, jako je hledání semantické dvojznačnosti v nějakém reprezentačním prostoru.
Existuje něco nepříjemného v přiznání, že ztrácíme kontrolu, a přesto cítíme, že je to nejrozumnější věc, co dělat. Můžete si to představit jako „intuitivní důkaz“, že některé útoky budou nezastavitelné. A pokud vás to znepokojuje, budete rádi, že víte, že GPT 5.2 našel tento argument „nekontroverzní nebo nový“ a doporučil, abychom „nebelaborem bod“ a zkrátili 40 % článku.
