Una falla non corretta in LMCache consente l'esecuzione di codice remoto
Una vulnerabilità critica non corretta in LMCache consente a un aggressore di eseguire codice in remoto su un server cache senza prima effettuare l'accesso, secondo una divulgazione pubblicata da JFrog il 7 ottobre. LMCache è un software open source che accelera i server di modelli linguistici di grandi dimensioni (LLM) come vLLM, strumenti che generano ed elaborano testo con intelligenza artificiale, memorizzando il lavoro ripetuto in modo che il modello non debba ricalcolarlo. La falla risiede nella modalità multiprocesso di LMCache, in cui la cache viene eseguita come server autonomo che i worker LLM raggiungono tramite la libreria di messaggistica ZeroMQ, un sistema per lo scambio di messaggi tra programmi. Un singolo messaggio di rete predisposto a tale server può eseguire comandi con gli stessi privilegi del processo LMCache.
Il socket ZeroMQ che il server multiprocesso apre per consentire ai processi worker di registrarsi e condividere i dati memorizzati nella cache non dispone di autenticazione, il che significa che accetta messaggi senza verificare chi li ha inviati. Un tipo di messaggio viene spacchettato con pickle, un formato Python che può trasportare codice ed eseguirlo durante la decodifica dei dati. Il server spacchetta quel messaggio mentre sta ancora leggendo i suoi argomenti, prima di controllare il tipo di messaggio, quindi un messaggio predisposto può eseguire il codice del mittente. Il team di ricerca sulla sicurezza di JFrog ha scoperto la falla e la scoperta è attribuita a Yuval Moravchick. Sulle immagini container ufficiali del progetto, il processo LMCache viene eseguito come root, l'account più potente su un sistema Linux, quindi un attacco riuscito può assumere il pieno controllo della macchina, secondo JFrog.
La raggiungibilità di un server da un'altra macchina dipende da un'impostazione. Per impostazione predefinita, il server multiprocesso è in ascolto solo sulla macchina locale, quindi un altro host non può raggiungerlo. Diventa raggiungibile quando un operatore lo avvia con un indirizzo instradabile, come avviene nelle distribuzioni multi-nodo che condividono una cache tra macchine. Lo stesso esempio di distribuzione Kubernetes di LMCache, un sistema per l'esecuzione di applicazioni containerizzate, avvia il server in questo modo, in ascolto su ogni interfaccia di rete. Una copia di LMCache in esecuzione all'interno di un singolo processo vLLM non apre affatto la porta.
La vulnerabilità è tracciata come CVE-2026-105192 e ha un punteggio di gravità di 9,8 su 10, nell'intervallo critico, il rating che JFrog assegna a un server associato a un indirizzo instradabile. Colpisce LMCache dalla versione 0.3.9, rilasciata nell'ottobre 2025, fino alla 0.5.5, l'ultima versione stabile, ed è presente anche nelle release candidate 0.5.6 e nel ramo di sviluppo. Non esiste una versione corretta. LMCache non ha pubblicato un avviso di sicurezza per la falla e l'avviso di JFrog non offre agli operatori un modo per determinare se un server sia già stato attaccato.
Separatamente, un utente GitHub ha aperto sei ulteriori segnalazioni di sicurezza su LMCache il 6 ottobre, il giorno prima che CVE-2026-105192 fosse resa pubblica. Tali segnalazioni denunciano l'accesso non autenticato ai dati memorizzati nella cache appartenenti a diversi tenant, nonché l'accesso a diversi servizi di rete che eseguono comandi senza accesso. Provengono da un unico account, si basano su affermazioni proof-of-concept e non hanno CVE, né conferma da parte dei manutentori, né correzioni. Una segnalazione indica un comportamento predefinito di LMCache che da allora è cambiato: un server HTTP di amministrazione che era in ascolto su ogni interfaccia di rete nella versione 0.5.5 ascolta solo sull'host locale nelle release candidate 0.5.6.
Una falla correlata in vLLM è già stata corretta. Prima della versione 0.30.0, rilasciata il 22 settembre, una singola richiesta contenente un valore cache_salt malformato poteva mandare in crash il motore nelle distribuzioni che utilizzano il connettore multiprocesso LMCache. Quel bug di denial-of-service è tracciato come CVE-2026-105756, con valutazione 6,5, e non consente l'esecuzione di codice. L'errore fondamentale, passare dati da un socket di rete non autenticato a pickle, è lo stesso che i ricercatori hanno riscontrato in altri framework di inferenza AI nel novembre 2025, in un gruppo di falle che hanno chiamato ShadowMQ. Non è stato stabilito se il codice di LMCache condivida una fonte comune con quei progetti.
Fino a quando non verrà distribuita una versione corretta, JFrog consiglia agli operatori di non assegnare al server multiprocesso un indirizzo instradabile e di mantenere la sua porta sulla macchina locale o su una rete cluster affidabile. Un firewall che limita chi può raggiungere la porta riduce il rischio ma non lo elimina, perché qualsiasi host che può ancora aprire una connessione può eseguire codice. Per i team IT che gestiscono caching AI o qualsiasi infrastruttura esposta pubblicamente, mantenere gli endpoint di gestione e cache non autenticati fuori da Internet pubblico e limitare l'accesso a reti affidabili è esattamente il tipo di controllo che AEU-I applica nell'ambito delle revisioni di infrastrutture e consulenza orientate alla sicurezza.