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

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.

Zdrojový kód na obrazovce notebooku
Zdrojový kód na obrazovce notebooku. Foto: qubodup, Flickr (CC BY 2.0)

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-47851CVE-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.

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.

Dál k tématu

  1. Bezpečnost

    V bezobslužném režimu zastaví Continue CLI ničivý příkaz jen podle neúplného seznamu

    Continue CLI umí běžet bez dohledu a v tom režimu spouští příkazy shellu bez ptaní. Jedinou tvrdou zábranou zůstává výčet nebezpečných cest: zná kořen, domovský adresář…

  2. Bezpečnost

    Zapnuté MCP v Chainlitu dovolovalo bez přihlášení spouštět příkazy na serveru

    Kdo v Chainlitu ručně zapnul podporu MCP, vystavil rozhraní, přes které mohl nepřihlášený klient poslat příkaz operačnímu systému. Další chyba dovolovala serveru…

  3. Bezpečnost

    Server mcp-searxng posílal heslo k instanci SearXNG klientovi hned po připojení

    Prostředník mezi asistentem a vyhledávačem SearXNG posílal ve verzi 1.11.0 celý obsah proměnné SEARXNG_URL, tedy i jméno a heslo v ní zapsané, jako logovací zprávu…

  4. Bezpečnost

    SGLang omezuje vzdálená média na 64 MiB

    Inference server SGLang 0.5.18 nově omezuje jeden vzdálený obrázek, video nebo zvuk na 64 MiB. Pro servery přístupné nedůvěryhodným klientům přidal také volitelný seznam…