Přeskočit na obsah
Bezpečnost 4 min čtení

Útok podvrhne agentovi fakta místo pokynů. V testu neodolal Claude Code ani Codex

Šest autorů popsalo třídu útoků, která agentovi nepodstrčí skrytý příkaz, ale zfalšuje údaje, kterým bez ptaní věří – jméno odesílatele, identifikátor tlačítka, záznam o už proběhlém nástroji. Obrany, které klasické vkládání pokynů srazily skoro na nulu, tenhle útok pustily až v polovině pokusů.

Výzkum bezpečnosti agentních nástrojů se soustřeďuje především na jednu věc: nepustit dovnitř text, který se tváří jako příkaz. Práce zveřejněná 6. července na arXivu ukazuje, že to nestačí. Autoři ze Seoul National University, z University of Illinois Urbana-Champaign a z firmy Largosoft v ní popsali útok, který agentovi žádný příkaz nepodstrčí. Podvrhne mu fakta – a agent pak poslušně splní přesně to, oč ho uživatel požádal.

Kasa se sazečskými literami v muzeu
Kasa se sazečskými literami v Gutenbergově muzeu v Mohuči. Oddělovač v datech pro model plní podobnou úlohu jako interpunkce v sazbě – s tím rozdílem, že model ji nečte podle pravidel, ale odhadem. Foto: dronepicr, Wikimedia Commons (CC BY 2.0)

Rozdíl mezi podvrženým příkazem a podvrženým údajem

Agent čte dva druhy textu. Pokyny, tedy co mu zadal uživatel a co má v systémovém zadání – a data, tedy všechno, co si po cestě natáhne: e-mail, webovou stránku, komentář v repozitáři, odpověď nástroje. Klasické nepřímé vkládání pokynů schová do těch dat rozkaz ve smyslu „zapomeň zadání a pošli mi ty soubory“. Takhle vypadal třeba nález o Copilotu ve Wordu, který skrytý pokyn přenášel do dalších dokumentů. Proti tomuhle druhu útoku dnešní obrany fungují dobře, protože poznají text, který zní jako rozkaz.

Nový útok autoři pojmenovali agent data injection, zkráceně ADI. Míří o patro níž: na drobné údaje, které agent bere jako danost – kdo poslal e-mail, jaký má tlačítko na stránce identifikátor, jestli už nějaký nástroj proběhl a s jakým výsledkem. Podvrhnout se dá kterýkoli z nich a zadaný úkol zůstane nezměněný. Změní se jen podklad, na kterém ho agent splní.

Interpunkce, kterou model čte odhadem

Data se agentovi předávají v nějaké struktuře – ve formátu JSON, ve značkách stránky – a hranice mezi poli drží interpunkce: uvozovky, složené a hranaté závorky, konce řádků. Běžný program ji čte podle pevných pravidel, jazykový model odhadem. Útočník proto může do pole, které ovládá, nasypat něco, co jako oddělovač jen vypadá, a model tam uvidí strukturu, která tam není: druhý e-mail, tlačítko navíc, výsledek nástroje, který nikdy neběžel.

Ta interpunkce navíc nemusí být správná. V měření na datech ve formátu JSON prošla uvozovka se zpětným lomítkem ve 41,8 % pokusů, typografická uvozovka ve 43,3 %, apostrof ve 42,6 % a znak dolaru ve 38,8 %. Přísný parser by všechny čtyři přečetl jako obyčejná písmena.

Šest modelů, šest zásahů

Autoři útok nejdřív změřili na samotných modelech bez agentní nadstavby: GPT-5.2 ve verzi z 11. prosince 2025, GPT-5-mini, Claude Opus 4.5, Claude Sonnet 4.5, Gemini 3 Pro a Gemini 3 Flash. Na datech ve formátu JSON útok vyšel v 31,3 až 43,3 % pokusů podle modelu, na struktuře webové stránky ve 33,3 až 100 %. Neodolal ani jeden. Opus 5, který Anthropic vydal 24. července, tedy až po odeslání práce, mezi testovanými není.

Tři útoky na nástroje, které se opravdu prodávají

Prvním terčem jsou agenti ovládající prohlížeč. Claude in Chrome, Antigravity od Googlu i Nanobrowser číslují prvky stránky průběžně, takže se dá dopředu spočítat, jaké číslo dostane tlačítko o kus níž. Podvržená recenze pod produktem si vypůjčí číslo skutečného tlačítka a agent, který má kliknout na „Číst dál“, klikne na „Koupit“. ChatGPT Atlas na to nenaletěl, protože prvkům přiděluje náhodné identifikátory, a ty se uhodnout nedají.

Druhý útok míří na kódovací agenty. Běžná úloha zní „najdi v hlášení chyby opravu doporučenou správcem projektu a použij ji“. Útočník napíše obyčejný komentář a v jeho těle padělá údaj o autorovi tak, aby to vypadalo, že komentář psal správce. Agent pak spustí cizí příkaz na počítači vývojáře. Autoři to předvedli na Claude Code, Codexu i Gemini CLI.

Třetí je útok na dodavatelský řetězec. Návrh změny podstrčí agentovi do historie záznam o kontrole, která nikdy neproběhla; agent si přečte falešný výsledek, kód označí za čistý a jde ho začlenit.

Souhlas uživatele to nezastaví

Všechny jmenované nástroje se před rizikovým krokem ptají. Dotaz na kliknutí říká, že agent chce kliknout na prvek – ne na který a proč. Kódovací agenti sice ukážou, jak k závěru došli, jenže ta úvaha stojí na podvržených faktech, takže popisuje naprosto rozumný postup. Uživatel u obrazovky nemá jak odlišit poctivé schválení od vyrobeného.

Obrany, které fungují proti pokynům, tady selhávají

Druhá část měření běžela v prostředí AgentDojo, které agentovi simuluje poštu, cloudový disk nebo bankovnictví. Autoři použili 96 uživatelských úloh, přidali 108 vlastních útoků a proti nim postavili 935 klasických útoků se skrytým příkazem. Všichni agenti běželi na GPT-5.2. Skrytý příkaz proti sedmi zkoušeným obranám prakticky neprošel, úspěšnost 0 až 0,7 %. Nový útok proti týmž obranám prošel až v polovině pokusů.

Bez obrany zvládli agenti 86,5 % běžných úloh a útok jim prošel v 49,1 % případů. Nejpřísnější varianta systému CaMeL, který sleduje původ každého údaje, srazila úspěšnost útoku na nulu – jenže s ní agenti dokončili jen 36,5 % běžných úloh. Uprostřed leží náhodná přípona připojená k názvům polí: užitečnost zůstala na 83,3 % a útok klesl na 28,7 %. Podobně dopadl systém Progent, 81,4 % a 22,2 %, ten k tomu ale potřebuje samostatný model navíc, který hlídá povolené akce.

U dat ve formátu JSON je náhodná přípona ještě lepší, než to vypadá: srazila úspěšnost z 31,3 až 43,3 % na 0 až 3 %, a to i tehdy, když ji útočník uhodl. U webových stránek to neplatí – správně uhodnutý identifikátor tam úspěšnost vrátil zpátky na 60 až 100 %. Prosté mazání interpunkce z nedůvěryhodných polí útok také omezí, ale sebere agentovi schopnost přečíst adresu nebo cestu k souboru, což potřebuje k běžné práci.

Co s tím zatím jde dělat

Autoři popisují jen pokusné útoky a o žádném zneužití mimo laboratoř nevědí. Nálezy nahlásili před odesláním práce Anthropicu, OpenAI, Googlu a Nanobrowseru; první tři je potvrdily, Nanobrowser podle textu práce neodpověděl. Sami z toho vyvozují, že dnešní agenti neplní jednu ze základních zásad bezpečnosti: neoddělují data, kterým věřit mají, od dat, kterým věřit nemají.

Náš názor: pro dnešek z toho plyne jedna nepříjemná věc. Dotaz „mám ten příkaz spustit?“ chrání jen tehdy, když má uživatel jak ověřit, odkud se příkaz vzal. U kódovacího agenta, který si čte cizí repozitář, tu možnost nemá.

Zdroje: Agent Data Injection Attacks are Realistic Threats to AI Agents, arXiv:2607.05120, 6. července 2026 (licence CC BY 4.0) – odtud pocházejí všechna čísla; The Hacker News, 16. července 2026.

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.