Ett enda meddelande, körande som root
JFrogs säkerhetsforskning offentliggjorde CVE-2026-105192 den 7 oktober och satte 9,8 och kritisk. Hålet hittades av Yuval Moravchick i samma team. Vid rådgivningens publicering finns ingen rättad version.
LMCache är det nyckel-värde-cachelager som vLLM-installationer använder för att hålla uppmärksamhetscacher vid liv mellan anrop och mellan maskiner. I flerprocessläge öppnar det en ZeroMQ ROUTER-socket utan CURVE-kryptering, utan ZAP-autentisering, utan lösenord och utan någon meddelandeautentisering alls. Meddelanden kommer som msgpack. Tilläggskod 1 är registrerad för en typ som heter DeviceIPCWrapper, vars metod Deserialize anropar Pythons pickle.loads.
Det anropet sker medan servern avkodar argumenten till en REGISTER_KV_CACHE-begäran — innan någon hanterarlogik körs. Ett enda oautentiserat meddelande kör alltså kod som LMCache-processens användare. De officiella containerbilderna kör den processen som root.
Om du är exponerad avgörs av en enda flagga
Siffran 9,8 är inte hela bilden, och det säger JFrog själv. Transporten binder till localhost om inte operatören sätter en routbar adress med --host, och den kritiska poängen gäller den routbara konfigurationen. Med rådgivningens ord: “En standardinstallation på en enda värd som behåller standardbindningen är inte nåbar från andra maskiner.”
LMCache som bara används inne i en vLLM-process öppnar inte porten alls. Den exponerade formen är flernodsinstallationen — den man tar till när en enda maskin inte räcker, vilket också är den som sannolikast kör produktionstrafik.

Ingen patch, så åtgärderna är dina
Version 0.3.9 och senare är drabbade. JFrog ber projektet byta ut serialiseraren bakom msgpack-tilläggskod 1 mot ett säkert format, sluta anropa pickle.loads på data från oautentiserade motparter, autentisera transporten med CURVE eller en HMAC per meddelande, och vägra en routbar bindning om autentisering inte är konfigurerad.
Tills en rättad version finns är rådet till driftansvariga kort: sätt inte --host till en routbar adress, håll port 5555 på localhost eller ett betrott klusternät, och brandväggsskydda den. JFrog lägger till förbehållet som betyder något — den som kan ansluta kan fortfarande köra kod som LMCache-användaren.
Samma felklass, två gånger på en vecka
Att avserialisera nätverksdata med pickle är ett pythonfel med tjugo års pappersspår, och det dyker nu upp i rörmokeriet kring modellservning. På Pwn2Own i Irland samma vecka föll LiteLLM första dagen på bristfällig indatavalidering kedjad med kodinjektion, värt 40 000 dollar, och ett andra lag tog det med fyra buggar till.
Det AI-specifika här är inte sårbarheten. Det är att ett cachelager mellan en modellserver och dess grafikprocessorer byggdes med ett oautentiserat styrplan, eftersom installationen antogs ligga på ett betrott nät.

Vad du bör kolla i kväll
Två frågor avgör det mesta: är port 5555 nåbar från något annat än värden, och kör containern som root? Är svaret ja på båda beskriver rådgivningen en väg från ett enda paket till ett skal på en maskin där dina modellvikter ligger.
Det man ska hålla ögonen på är den rättade versionen. Till dess är detta ett känt, poängsatt och offentligt dokumenterat hål med ett patchglapp, i en komponent som de flesta team som kör vLLM i skala inte så mycket valde som ärvde.