Přeskočit na obsah
Bezpečnost aktualizováno 14. 10. 2026 3 min čtení

Poslední požadavek v dávce dostal ve vLLM odpověď toho prvního

Hlášení CVE-2026-73558 z 8. září popisuje přetečení 32bitového indexu ve výpočetním jádře serveru vLLM. Sejde-li se v jedné dávce dost tokenů, sáhne výpočet pro poslední požadavek na data toho prvního a cizí odpověď skončí v odpovědi útočníka. Opravené vydání je 0.27.0 z 10. srpna; sama oprava leží ve veřejném repozitáři od konce července jako obyčejná oprava chyby.

Řady skříní superpočítače IBM Blue Gene/P v serverovém sále
Skříně superpočítače IBM Blue Gene/P v Argonne National Laboratory. Inferenční server počítá požadavky víc uživatelů v jedné dávce a právě na hranici mezi nimi popisovaná chyba stojí. Foto: Argonne National Laboratory, Wikimedia Commons (CC BY-SA 2.0)

Server vLLM obsluhuje jazykové modely tak, že požadavky víc uživatelů poskládá do jedné dávky a pustí je grafickou kartou naráz. Hlášení CVE-2026-73558, zveřejněné 8. září 2026, popisuje případ, kdy se ta dávka rozpadne špatným směrem: výpočet pro poslední požadavek začne číst data prvního a jeho odpověď se objeví v cizím výstupu. Známka je 5,3 z deseti, tedy střední závažnost, a týká se to všech verzí před 0.27.0.

Ukazatel do paměti se počítá ve 32 bitech

Chyba sedí v jádře act_and_mul_kernel, které počítá aktivační funkci mezi dvěma vrstvami sítě. Každý blok vláken si nejdřív spočítá, kde v paměti jeho data začínají:

const scalar_t* x_ptr = input + blockIdx.x * 2 * d;

blockIdx.x je pořadí tokenu v dávce, d šířka mezivrstvy modelu. Obě čísla jsou 32bitová, takže se i jejich součin počítá ve 32 bitech. Jakmile přeroste 4 294 967 296, začne se počítat znovu od nuly a ukazatel pak míří na začátek dávky místo na její konec.

Kdy k tomu dojde, se dá dopočítat. Model Llama 3.2 s miliardou parametrů, na kterém autor hlášení chybu předvedl, má d rovno 8 192, takže 2 × d je 16 384. Rozsah se vyčerpá po 262 144 tokenech. Dávka v předvedení měla sedmnáct požadavků po 16 384 tokenech, dohromady 278 528 – přesně o jednu sekvenci víc, než se do rozsahu vejde. Poslední požadavek proto nedostal pomíchaná čísla, ale doslovnou kopii odpovědi toho prvního. Vstupní čísla jsou z hlášení; mez počtu tokenů je rozsah indexu dělený 2 × d.

Ve veřejném tiketu chyba ležela od května

Bezpečnostní hlášení není první veřejná zmínka. Tiket #42860 vznikl už 17. května 2026 a popisoval totéž místo v kódu jako numerickou chybu při dlouhých sekvencích. Doložený byl na jiném modelu: royokong/e5-v má podle tiketu d rovno 14 336, a při 7 890 tokenech v devatenácti požadavcích vyjde 149 910 tokenů proti prahu 149 796. Přebytek 114 tokenů zamíchá výsledky, celou cizí odpověď z něj ale nevydoluje nikdo.

Že jde o víc než o pokažená čísla, napsal do téhož tiketu 5. června další čtenář: jeho tým podle něj předvedl, že se tak dá získat odpověď jiného uživatele ze stejné dávky, a požádal o rychlou opravu. Od té věty do vydání opravy uplynulo osm týdnů a do přidělení čísla CVE víc než tři měsíce.

Oprava je jeden datový typ navíc

Návrh #49660 otevřel 24. července nový přispěvatel a sloučený byl o šest dní později. Pořadí tokenu se v něm ukládá do 64bitové proměnné a teprve ta jde do výpočtu:

const int64_t token_idx = blockIdx.x;
const scalar_t* x_ptr = input + token_idx * 2 * d;

Totéž na třech místech souboru, celkem devět přidaných a šest odebraných řádků. Ven se to dostalo ve vLLM 0.27.0 z 10. srpna 2026, tedy v tomtéž vydání, které přeskočilo dvě verze PyTorche. V poznámkách k tomu vydání stojí ten návrh jedině v seznamu nových přispěvatelů; mezi vypsanými změnami není a jeho vlastní nadpis mluví o přetečení celého čísla, ne o úniku dat.

Veřejná oprava před číslem CVE je záměr

Není to opomenutí. Bezpečnostní politika projektu dělí nálezy do čtyř stupňů a u dvou nižších předepisuje opak embarga: oprava se vyvíjí jako běžný veřejný návrh, protože podle ní veřejná viditelnost urychlí kontrolu i nasazení. Soukromá větev a předběžné upozornění provozovatelů jsou vyhrazené vysoké a kritické závažnosti.

Tentýž dokument ovšem popisuje střední stupeň jako nálezy, které nedovolí spuštění cizího kódu ani významný únik dat – a únik dat mezi uživateli tohle je. Známku srazila obtížnost: podle vektoru CVSS musí útočník trefit dávku, ve které je oběť, a potřebuje, aby v tu chvíli sama něco poslala.

Koho se to týká

Rozhoduje, kolik lidí na jednu instanci chodí. Kde běží model pro jednoho uživatele nebo jednu úlohu, zůstává z chyby početní kaz na dlouhých vstupech. Ve víceuživatelském provozu je to únik textu, který nikdo nemusí poznat, protože odpověď dorazí celá, jen patří někomu jinému. Práh závisí na šířce mezivrstvy modelu: čím širší, tím míň tokenů stačí.

Řešení je aktualizace na 0.27.0 nebo novější. Kdo sleduje jen bezpečnostní kanály, měl přitom šanci se o věci dozvědět až se zpožděním: záznam na cve.org je datovaný 13. srpnem a v databázi hlášení GitHubu se objevil 8. září. Stejná mezera provázela i CVE-2026-73557, které vLLM zveřejnil o čtyři dny dřív.

Zdroje

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. Infrastruktura

    Opravy, které OpenAI uvádí z testů izolace modelů, vznikly dřív, než pozastavila trénink

    OpenAI 23. října popsala, jak její agenti při zkouškách unikali z virtuálních strojů a hledali cestu na internet. Jako doklad uvádí opravy v Kata Containers, gVisoru a…

  2. Bezpečnost

    Na příčinu chyb PHP2Shell, připisovaných modelům, narazil vývojář PHP už v roce 2024

    Nadace PHP zveřejnila 21. října časovou osu dvou kritických chyb, kterým se říká PHP2Shell. První náznaky problému s docházející pamětí podle ní našel vývojář placený…

  3. Bezpečnost

    Doloženou opravu chyby Plugin4Shell mají ze čtyř agentů jen Claude Code a Codex

    Firma Air Security v září popsala, jak u Claude Code, Codexu, GitHub Copilotu a Gemini CLI podvrhnout plugin, který tržiště připnulo na prověřený commit. Anthropic chybu…

  4. Bezpečnost

    Agenti z Tencent Cloud se hlásili jako Claude, styl jejich kódu ale Claudovi neodpovídá

    Agenti AI běžící na Tencent Cloud se mezi 28. zářím a 8. říjnem 2026 přes 2 600krát pokusili stáhnout data z mapové služby Amap, obcházeli její ochranu proti robotům a…