Integrace Sentry SDK mohla do verze 2.66.1 vypnout schvalování nástrojů
Nové hlášení ze 30. srpna upozornilo, že integrace OpenAI Agents v Sentry SDK sestavovala každý nástroj znovu a nepřenášela jeho schvalování ani vstupní a výstupní kontroly. Oprava je od 10. srpna ve verzi 2.67.0. Současná verze 2.68.1 má podle téhož hlášení jinou chybu ve starší integrační cestě.

V integraci OpenAI Agents v Sentry SDK se opravená chyba ukázala jako bezpečnostní problém až tři týdny po vydání záplaty. Hlášení otevřené 30. srpna upozorňuje, že starší kód při přidávání měření nevyměnil jen funkci, která nástroj spouští. Vytvořil nový objekt FunctionTool a zkopíroval do něj šest vybraných polí.
Mezi nimi nebyla volba needs_approval, která před provedením nástroje přeruší běh a čeká na souhlas člověka. Chyběly také vstupní a výstupní kontroly, časový limit a odložené načítání definice. Nový objekt proto dostal jejich výchozí hodnoty: schvalování se vypnulo a seznamy kontrol zůstaly prázdné.
Šest přenesených polí nestačilo
Opravný diff Sentry zachycuje původní konstruktor doslova. Přenášel jméno, popis, schéma parametrů, spouštěcí funkci, přísnost schématu a stav zapnutí. Každá další vlastnost se při vytvoření nové datové třídy vrátila na výchozí hodnotu.
Samostatný zdrojový kód OpenAI Agents potvrzuje význam vynechaných polí. Vstupní kontroly se spouštějí před nástrojem, výstupní po něm a needs_approval=True zastaví běh, dokud člověk volání nepovolí nebo neodmítne. Nejde tedy jen o metadata pro obrazovku Sentry.
Dopad závisel na nastavení aplikace. Nástroj bez schvalování a bez vlastních kontrol se choval stejně jako před obalením. Aplikace, která těmito poli chránila zápis, mazání nebo jinou citlivou akci, však o ochranu přišla bez chyby a bez varování. Veřejné hlášení neuvádí známé zneužití ani přidělené číslo CVE.
Oprava vyšla pod obecným názvem
Sentry změnilo postup v návrhu číslo 6961. Místo sestavení nového nástroje ponechá původní objekt a vymění jen jeho spouštěcí funkci. Ostatní vlastnosti tak zůstanou zachované. Návrh vznikl kvůli testu odloženého načítání, ne kvůli schvalování.
Oprava se dostala do Sentry SDK 2.67.0 vydaného 10. srpna. Changelog ji popisuje větou „Stop destructively wrapping tools“. Schvalování, kontroly ani možné selhání do otevřeného režimu nejmenuje.
Autor nového hlášení uvádí, že vadný postup začínal změnou číslo 4437 a zůstal až do verze 2.66.1. Ve zveřejněném testu porovnal Sentry SDK 2.58.0 s verzí 2.68.1: u staršího balíku nepřežilo odložené načítání ani u jednoho ze 34 nástrojů, u novějšího u všech. Přesný počátek dotčené řady zatím správci Sentry veřejně nepotvrdili.
Verze 2.68.1 má jiné otevřené hlášení
Oprava nezavřela druhý problém. Dnešní kód starší integrační cesty při každém získání seznamu nástrojů vezme současnou spouštěcí funkci a obalí ji další měřicí vrstvou. Neobsahuje značku, podle které by poznal, že tentýž objekt už jednou upravil.
Reportér na Sentry SDK 2.68.1 naměřil po pěti kolech hloubku pěti obalů. Výsledkem mají být násobené záznamy gen_ai.execute_tool a trvalá změna objektu, který patří aplikaci. Tato část se týká kompatibilní cesty pro OpenAI Agents starší než 0.3.2; od této verze používá Sentry nativní háčky běhu.
Hlášení zůstává otevřené a jedinou odpovědí je zatím automatický odkaz na interní položku Sentry. Správce projektu veřejně nepotvrdil příčinu ani termín opravy. Současný kód už schvalování a kontroly nezahazuje; nová výtka míří na hromadění měřicích obalů.
Rozhodují dvě verze, ne jen jedna
U instalace se Sentry SDK 2.66.1 nebo starším má smysl zkontrolovat, zda používá integraci OpenAI Agents a zda nástroje spoléhají na needs_approval, vlastní kontroly nebo časové limity. Přechod alespoň na 2.67.0 zachová jejich nastavení. To plyne přímo z opravného diffu a definice FunctionTool.
Samotná aktualizace na 2.68.1 neřeší otevřené vrstvení u starých vydání OpenAI Agents. Pro tuto kombinaci zatím není zveřejněná záplata. Kdo používá odložené načítání nástrojů, stejně potřebuje novější OpenAI Agents; Sentry přešlo na nativní háčky od verze 0.3.2.