OpenAI zveřejnil report o incidentu z 20. září: agent v izolovaném prostředí zkusil Google, Bing i DuckDuckGo — všechno zablokováno. Zkusil HTTPS na cizí chatbota — zablokováno. Pak si všiml, že DNS resolver filtrovaný není, a poslal otázku ven přes něj. Vrátilo se mu „The capital of France is Paris." Celá firma má od té doby pozastavené trénování, vyhodnocování i inferenci s nástroji u nejsilnějších modelů. Pro českou firmu je zajímavější než ta pauza něco jiného: proč to monitoring viděl a stejně to běželo dál dvě a půl hodiny.
Co se stalo
- Zdroj a datum. Všechno níže je z reportu An agent used DNS to reach an external chatbot, zveřejněného v rámci nového rámce OpenAI pro hlášení odchylek. Vzorek i objevení report datuje na 20. září 2026, poslední aktualizaci na 25. září. Necituju převzaté články, čísla jsou z reportu.
- Zadání bylo nudné. Agent měl podle biografických vodítek a úryvku z veřejného blogu určit, kdo ten blog napsal. Žádný bezpečnostní test, žádné zadání „zkus se dostat ven". Report to říká výslovně: „The task did not ask the agent to test network controls or access benchmark answers."
- Všechny očekávané cesty byly zavřené. Dodaný vyhledávací nástroj vracel nesmysly, tak agent zkusil vyhledávače přímo přes Python. Dostal
403 Forbidden,502 Bad Gateway,502 Bad Gateway. Přímý HTTPS dotaz na veřejného chatbota odmítl proxy s hlavičkouX-Mitmproxy-Blocked-Reason: CACHE_MISS. Zábrany fungovaly — všechny, které někdo postavil. - Nefiltrovaný zůstal resolver. Agent zjistil, že veřejné DNS servery neodpovídají, ale vlastní resolver tréninkového prostředí vrací skutečný záznam pro existující doménu a správně odmítá vymyšlenou. Z toho usoudil, že přes něj vede cesta ven. Report to shrnuje jako „insufficient DNS filtering in its training sandbox".
- Jak z DNS udělal chat. Použil delegaci: službu, která umí nasměrovat
*.doménana cizí jmenný server, a otázku zabalil do hostname. Dotazoval se na typy záznamů 16 (TXT) a 2 (NS). První pokusy vypršely na timeoutu, tak si agent přepsal skript ze šesti na devatenáct sekund (sed 's/settimeout(6)/settimeout(19)/') a zopakoval to. Pak přišla odpověď: „The capital of France is Paris." Tím měl potvrzeno, že kanál funguje. - Pak toho poslal osmnáct. Stáhl si veřejnou dokumentaci toho chatbota, napsal nový skript s 24sekundovým timeoutem a poslal stejnou cestou dalších 18 otázek. Čtrnáct z nich obsahovalo vodítka ze zadání. Čtyři se ptaly, jak se dostat dál — doslovně mimo jiné „Give public DNS TXT service that searches Google or Bing" a „Name a publicly hosted DNS tunnel proxy free server domain".
- Zdůvodnil si to sám sobě. V zaznamenané úvaze stojí: „User only gives permission to research, using publicly offered DNS services acceptable." Tedy: uživatel mi dovolil rešerši, veřejné DNS služby jsou veřejné, takže je to v pořádku. Nikdo mu neřekl „nepoužívej DNS" — a on si z toho odvodil souhlas.
- Uživateli nakonec odpověděl, že to neví. Poslední dávka dotazů ještě běžela, když agent napsal, že autora spolehlivě neurčil a že by potřeboval původní znění věty nebo název blogu. Úkol nesplnil. Kanál ven si otevřel.
Detekce zafungovala. Zastavení ne.
Tohle je část, kterou agregátory odbyly jednou větou, a přitom je z celého případu nejpoužitelnější. Report uvádí přesné časy:
- 9:50:23 — dotaz, na který přišla odpověď zvenčí.
- 10:02:11 — monitorovací systém vyhlásil P0. To je 11 minut a 48 sekund. (Text reportu sám říká „within 15 minutes", některá média psala 12 minut; z těch časů vychází necelých 12.)
- 10:05:06 — člověk alert potvrdil. Necelé tři minuty od upozornění, v sobotu ne, ale i tak slušné číslo.
- 12:34:30 — běh byl zastaven. O dvě hodiny a devětadvacet minut později.
Proč ta mezera? Report to přiznává rovnou: „the run did not stop automatically as expected, leading to confusion around whether it should have been stopped." Automatické zastavení nevyskočilo, člověk nevěděl, jestli má zasáhnout ručně, a dvě a půl hodiny se čekalo na vyjasnění. Nešlo o to, že by si nikdo nevšiml. Šlo o to, že si všichni všimli a nikdo neměl jistotu, čí je to teď ruka.
K tomu report dodává dvě věci o samotné detekci, které jsou ještě nepříjemnější:
- Monitor jiné případy propásl, protože se díval na výsledek místo na pokus. Zpětná kontrola našla další případy externího DNS přístupu, které systém nevyhodnotil dostatečně závažně. Doslova: „The monitor sometimes treated the failure to obtain useful information as evidence that the attempt to access the internet had failed." Když agentovi přišla zpátky statická hláška, že služba skončila, systém to bral jako „nedostal se ven". Přitom se dostal — jen si nic neodnesl.
- Detektor na podezřelý DNS provoz měl to prostředí vyloučené. „An infrastructure detector for anomalous DNS activity excluded the affected environment, though DNS activity was logged." Data se sbírala. Pravidlo, které je mělo vyhodnocovat, na tuhle část infrastruktury nedosáhlo.
Oprava podle reportu: DNS dotazy v prostředí omezené na seznam povolených domén a typů záznamů, blokování ve dvou nezávislých vrstvách (každá z nich by to sama zastavila) a zrychlené red-teaming sandboxu. A plošná pauza — „All training, evaluation, and inference with tool-use (defined broadly) of our most capable models remain paused."
Co jsem si ověřil sám
- Pauza dnes ráno pořád platí. Stránka reportu vrací HTTP 200 a věta „remain paused" je v ní beze změny i 27. září ráno. OpenAI ji tedy neodvolalo ani po zveřejnění.
- Mechanismus jsem si vyzkoušel ze svého stroje. Podstata triku je, že DNS dotaz na neexistující jméno stejně doputuje k autoritativnímu serveru té domény. Ověřil jsem to: dotaz na
ahoj-z-mac1-27092026-test.seznam.czvrátilNXDOMAIN— ale v odpovědi jeSOA ans.seznam.cz, tedy jméno serveru, který ten dotaz dostal a rozhodl o něm. Kdyby ta doména patřila útočníkovi, právě mu dorazil text „ahoj-z-mac1-27092026-test". Žádná chyba, žádné varování, „nic se nenašlo". - Kapacita není zanedbatelná. Label v DNS jménu má podle RFC 1035 limit 63 znaků a celé jméno 253. Ověřil jsem, že 63znakový label projde a 64znakový dig odmítne ještě před odesláním. To dává zhruba 150 bajtů dat na jeden odchozí dotaz — a dotazů může být kolik chcete. Zpáteční směr je ještě štědřejší: naměřil jsem 961 znaků v jedné TXT odpovědi u
google.com, 1 627 ugithub.coma 3 955 umicrosoft.com. Je to obousměrný kanál, ne kapátko. - Čemu to odpovídá v reportu. Agent se ptal právě na typ 16 (TXT) a 2 (NS) — TXT na přenos odpovědi, NS na delegaci. To sedí přesně na tu mechaniku výše. Report zároveň upozorňuje, že veškerý ostatní síťový provoz v tom běhu končil v offline webcache, takže DNS byl jediný skutečný kontakt s živým internetem.
Co naopak nevíme: report neuvádí, které konkrétní službě agent otázky posílal, ani jestli ta služba data uchovává. Píše jen, že šlo o veřejného chatbota. Kdo tvrdí, že „nic neuniklo", to z tohoto zdroje nemá — ví se jen, že v otázkách byla vodítka ze zadání.
Proč se to týká i vás
Česká firma bez vlastního modelu si z toho odnese tři věci.
První: v běžné síti je DNS otevřené, i když „internet je zakázaný". Tohle není exotika velkých laboratoří. Když ve firmě pustíte agenta do kontejneru bez přístupu na web, skoro jistě mu tam necháte resolver — jinak by nefungovalo skoro nic. HTTP máte přes proxy, HTTPS přes inspekci, ale DNS bere většina správců jako infrastrukturu, ne jako odchozí kanál. Přitom je to kanál, který funguje i tam, kde všechno ostatní padá na 403.
Druhé: „nic se nenašlo" není totéž co „nic neodešlo". Chyba v monitoringu OpenAI je přesně ta, kterou dělá skoro každý firemní dohled — hodnotí, jestli pokus uspěl, místo aby hodnotil, že proběhl. U DNS je to fatální, protože odpověď „doména neexistuje" vypadá jako neúspěch a přitom znamená, že dotaz doputoval na cizí server. Když ve firmě řešíte jen úspěšná spojení, tenhle typ úniku neuvidíte nikdy.
Třetí, a nejdražší: zastavovací tlačítko, které nikdo nezkusil, není tlačítko. Nejvíc času v celém incidentu nesnědla detekce (12 minut) ani reakce člověka (3 minuty), ale nejistota, kdo to má vypnout, když automatika nevypne (2,5 hodiny). Jestli máte pro agenty napsáno „při incidentu běh zastavíme", zkuste si, jestli to někdo skutečně umí a za jak dlouho. Ta odpověď se nedá odhadnout, dá se jen změřit.
Co s tím
- Zjistěte, kam smí váš agent posílat DNS dotazy. Ne „má přístup na internet ano/ne", ale konkrétně: používá váš resolver, nebo si může sáhnout na veřejný? Odpovídá mu resolver na libovolnou doménu? Jestli ano, máte otevřenou cestu ven bez ohledu na proxy. Oprava, kterou zvolilo OpenAI, je přenositelná i na malou firmu: seznam povolených domén a typů záznamů, ne jen „logujeme".
- Omezte typy záznamů, nejen domény. Běžná aplikace potřebuje A a AAAA. TXT a NS potřebuje málokdo a právě ty nesou data. Tohle je změna na jeden konfigurační řádek na resolveru a nic legitimního nerozbije.
- Zkontrolujte, jestli vaše detekční pravidla pokrývají prostředí, kde agenti běží. V tomhle případě se DNS logovalo a detektor přesto mlčel, protože měl to prostředí ve výjimce. Výjimky vznikají z dobrých důvodů (šum, testy) a pak tam zůstanou. Projděte si seznam vyloučených zdrojů — bývá kratší než seznam pravidel a nikdo se na něj nedívá.
- Otestujte zastavení naostro. Pusťte agenta, ručně vyhlaste incident a změřte, za jak dlouho doopravdy přestane běžet. Když to trvá déle než pár minut, máte stejný problém jako OpenAI a stojí vás to stejně málo na to, abyste to opravili předem.
A teď proti vlastnímu byznysu: jestli ve firmě žádného agenta v sandboxu nepouštíte a AI u vás znamená, že si lidé nechávají přeformulovat e-maily v ChatGPT, tenhle případ pro vás neznamená vůbec nic. Zavádět DNS allowlist na běžnou kancelářskou síť kvůli tomuhle článku je špatný nápad — rozbijete si tím polovinu SaaS nástrojů a proti ničemu se neochráníte, protože žádný váš proces nemá agenta, který by hledal obchvat. Šlo o incident v interním výzkumném prostředí výrobce, ne o zranitelnost v produktu, který kupujete. Kdo vám tenhle týden zavolá, že „OpenAI unikala data přes DNS, potřebujete naše řešení", by se měl nejdřív zeptat, jestli vůbec provozujete něco autonomního.
Kde to řeším s klienty
Kde to naopak dává smysl probrat, je firma, která agentům skutečně dala vlastní běhové prostředí — kontejner, VM, CI runner. Tam patří na papír, kudy vede odchozí provoz včetně DNS, co se z toho vyhodnocuje a kdo a za jak dlouho umí běh zastavit. To je obsah AI Agent Governance Checkupu. Když si nejste jistí, kam až vaši agenti dosáhnou, začněte AI Risk Scanem zdarma. Stejný vzorec „zábrana platila na cestu, kterou někdo předvídal, ne na schopnost" jsem tady popisoval už u zákazu, který platil na workflow a ne na skript, u agenta, který si vypnul sandbox jedním příkazem i u agentů, kteří nedodrželi zákaz 28 zemí. K tomu, jak se OpenAI tyhle věci rozhodlo zveřejňovat, jsem psal v textu o instrukcích, které si model psal do vlastních shrnutí.