POST /mcp-rest/test/connectionPOST /mcp-rest/test/tools/listEntrambi accettano una configurazione completa del server MCP nel corpo della richiesta JSON, inclusi i campi Cmd, args ed env che il trasporto stdio utilizza per avviare i processi del server. Quando un utente autenticato chiama uno di questi endpoint con questa configurazione, LiteLLM prende il valore Cmd fornito e lo esegue come sottoprocesso sulla macchina host, con gli stessi privilegi di sistema del processo proxy LiteLLM stesso .
Inizialmente, BerriAI aveva divulgato la cosa come un bug di esecuzione codice remoto autenticato: un attaccante aveva bisogno di una chiave API valida per raggiungere gli endpoint, e non c'era alcun controllo basato sui ruoli. Anche un utente interno con privilegi minimi e una qualsiasi chiave API proxy valida poteva eseguire comandi arbitrari sull'host . Ma la storia non finisce qui.
La seconda vulnerabilità è CVE-2026-48710, soprannominata "BadHost" dai ricercatori. Si tratta di una falla nella convalida dell'header Host in Starlette, il leggero framework ASGI che è alla base di FastAPI, vLLM e migliaia di altre applicazioni web Python, inclusa LiteLLM . Sono interessate tutte le versioni di Starlette dalla 0.8.3 alla 1.0.0
.
La causa principale è un disaccordo di interpretazione (parser disagreement) tra il modo in cui Starlette smista le richieste in arrivo e il modo in cui ricostruisce l'URL per la logica applicativa . Il livello di routing ASGI usa il percorso HTTP grezzo della richiesta per decidere quale endpoint gestirla. Ma
request.url — l'URL che il middleware e i decoratori dell'applicazione vedono — viene ricostruito concatenando il valore grezzo dell'header Host con il percorso della richiesta, senza una convalida adeguata .
Iniettando caratteri delimitatori come ? o # nell'header Host, un attaccante può far sì che request.url.path appaia completamente diverso dal percorso effettivamente richiesto . Il middleware vede un percorso innocuo come
/, mentre il router, dietro le quinte, inoltra la richiesta al vero endpoint di destinazione. Qualsiasi middleware di autenticazione basato sul percorso che si fidi di request.url.path può essere aggirato banalmente .
Il decoratore di autenticazione di LiteLLM controlla request.url.path per determinare se una richiesta necessita di una chiave API valida. Il bypass BadHost permette a un attaccante di manipolare quell'URL in modo che il middleware di autenticazione veda un percorso che non richiede credenziali, mentre il router ASGI smista simultaneamente la richiesta verso uno dei vulnerabili endpoint di command injection MCP .
Questo rimuove l'unico cancello di controllo accessi che si frapponeva tra internet e l'esecuzione di comandi arbitrari. Un attaccante senza credenziali e senza alcun accesso preventivo alla rete può inviare una singola richiesta HTTP creata ad arte, che aggira completamente l'autenticazione ed esegue comandi del sistema operativo sull'host del proxy LiteLLM . Horizon3.ai ha confermato che l'intera catena funziona, assegnandole un punteggio CVSS combinato di 10.0 — massima gravità — proprio perché ottiene l'esecuzione di codice da remoto senza autenticazione
.
Un exploit riuscito fornisce all'attaccante l'esecuzione di comandi con i privilegi del processo proxy LiteLLM. Da lì, la superficie di minaccia si espande rapidamente:
L'aggiunta di CVE-2026-42271 al catalogo KEV da parte del CISA l'8 giugno 2026 conferma che la vulnerabilità non è teorica: gli attaccanti la stanno attivamente "militarizzando" in questo momento . In base alla Direttiva Operativa Vincolante 22-01, tutte le agenzie federali civili statunitensi devono applicare le patch per le vulnerabilità elencate nel KEV entro una finestra temporale assegnata. Il CISA raccomanda inoltre vivamente a tutte le organizzazioni, pubbliche e private, di trattare le nuove voci KEV come priorità di patching d'emergenza
.
La soluzione per l'exploit concatenato richiede aggiornamenti su due fronti, più diverse misure di difesa in profondità per affrontare l'esposizione delle credenziali:
Host in arrivo rispetto alle specifiche URL e ignora gli header che contengono caratteri non validi, prevenendo il trucco di confusione del percorso che alimenta il bypass di autenticazione POST /mcp-rest/test/connectionPOST /mcp-rest/test/tools/listHost manipolati La gravità CVSS 10.0 combinata, lo sfruttamento attivo in ambienti reali e la designazione KEV del CISA significano che le organizzazioni che utilizzano servizi basati su LiteLLM o Starlette devono trattare questa situazione come un evento di "patch-and-rotate" d'emergenza. La finestra tra lo sfruttamento attivo e l'esfiltrazione delle credenziali è già aperta.
Comments
0 comments