Spring AI 2.0.1 zavírá chybu v PDF i cestu k podstrčení modelu přes cache
Spring AI opravilo dvě zranitelnosti ve zpracování dokumentů a lokálních modelů. Speciálně připravené PDF může zastavit vlákno pro načítání dat, místní uživatel na sdíleném stroji zase mohl podstrčit vlastní ONNX model do předvídatelné cache. Veřejně dostupnou opravou je verze 2.0.1.

Národní databáze zranitelností NVD zařadila 27. srpna 2026 dvě nové chyby knihovny Spring AI. Obě se týkají částí, které stojí mimo samotný chat s modelem: první čte dokumenty PDF, druhá stahuje a ukládá lokální modely ve formátu ONNX. Spring je vede jako CVE-2026-47851 a CVE-2026-47852.
Zasažené jsou stejné řady: Spring AI 2.0.0, verze 1.1.0 až 1.1.8 a verze 1.0.0 až 1.0.9. Oprava pro veřejnou větev vyšla jako Spring AI 2.0.1. Balíček je od 20. srpna také v Maven Central a projekt jej na GitHubu vydal o den později. Bezpečnostní záznamy se do NVD a databáze GitHubu dostaly až dnes.
Obsah PDF mohl zahltit zásobník
První chyba neleží v textovém obsahu dokumentu, ale v jeho osnově neboli záložkách. PDF může obsahovat strom kapitol a podkapitol, podle kterého Spring AI skládá odstavce pro další zpracování. Příliš hluboký nebo zacyklený strom posílal starší verzi do opakovaného volání téže metody, dokud vlákno neskončilo chybou StackOverflowError.
To je odmítnutí služby, ne průnik k datům. Aplikace, která přijímá PDF od uživatelů a předává je čtečce PdfDocumentReader, mohla na speciálně připraveném souboru přijít o vlákno pro načítání dokumentu. Dodavatel chybu hodnotí známkou 7,5 z 10 a počítá se síťově dostupným vstupem bez přihlášení.
Opravný diff ukazuje dvě pojistky. Čtečka si nově pamatuje navštívené položky osnovy, takže pozná kruhový odkaz, a současně odmítne zanoření za 64 úrovní. Stejný strop hlídá i následné převádění stromu na plochý seznam odstavců.
Předvídatelná cache otevřela cestu k výměně modelu
Druhá chyba má jinou podmínku: útočník už musí mít místní účet na stejném víceuživatelském počítači. Spring AI ukládal stažené ONNX modely do pevně pojmenované složky spring-ai-onnx-generative v systémovém adresáři pro dočasné soubory. Jiný uživatel tak mohl cestu vytvořit dřív a vložit do ní vlastní soubor modelu. Aplikace jej pak mohla načíst namísto očekávaného modelu.
Oprava cache opouští společné jméno. Java nyní při každém vytvoření služby založí nový dočasný adresář s náhodnou částí názvu. Tím mizí možnost připravit stejnou cestu před spuštěním cílové aplikace.
I tahle chyba dostala od dodavatele skóre 7,5. Veřejný záznam je ale potřeba číst opatrně. Slovní popis výslovně mluví o místním útočníkovi na sdíleném stroji, zatímco přiložený vektor CVSS uvádí síťový útok bez oprávnění. NVD zatím přebírá obě informace současně. Samotné číslo proto není důkaz, že lze model vyměnit na dálku; zveřejněný mechanismus vyžaduje lokální přístup k dočasnému adresáři.
Starší řady mají opravu jen v podpoře
Spring doporučuje přejít na odpovídající opravenou verzi. Pro řadu 2.0 je to veřejné vydání 2.0.1. Verze 2.0.0.1, 1.1.9 a 1.0.10 jsou v bulletinech označené jako dostupné pouze zákazníkům Enterprise Support. Kdo používá veřejné balíčky bez této podpory, má tedy přímočarou cestu přes upgrade z 2.0.0 na 2.0.1; u starších větví musí přejít na současnou veřejnou řadu nebo řešit podporované sestavení s dodavatelem.
Kontrola verze má smysl i tam, kde aplikace neprovozuje veřejný chatbot. Chyba PDF se projeví ve vstupní části systému při skládání podkladů pro model a chyba cache v modulu pro lokální embeddingy. Po přechodu na opravenou větev Spring žádné další kroky k oběma CVE nepožaduje.