CVE-2026-45829: RCE in ChromaDB, 73% dei server esposti a rischio

Una vulnerabilità di gravità massima, tracciata come CVE-2026-45829, colpisce il server Python FastAPI di ChromaDB, uno dei vector database più diffusi nelle

Contenuto

CVE-2026-45829: RCE in ChromaDB, 73% dei server esposti a rischio
CVE-2026-45829: RCE in ChromaDB, 73% dei server esposti a rischio

Una vulnerabilità di gravità massima, tracciata come CVE-2026-45829, colpisce il server Python FastAPI di ChromaDB, uno dei vector database più diffusi nelle applicazioni di intelligenza artificiale generativa. Scoperta dai ricercatori di HiddenLayer e resa pubblica oggi, 19 maggio 2026, la falla consente a un attaccante remoto e non autenticato di eseguire codice arbitrario su server esposti a Internet. Il meccanismo d'attacco sfrutta una particolarità architetturale rara e particolarmente insidiosa: il controllo di autenticazione avviene dopo che il modello malevolo è già stato caricato ed eseguito.

Il pacchetto ChromaDB su PyPI registra quasi 14 milioni di download mensili, secondo i dati riportati da BleepingComputer. Tuttavia, le query Shodan citate dai ricercatori indicano che circa il 73% delle istanze effettivamente esposte su Internet esegue una versione vulnerabile. I maintainer del progetto, contattati da HiddenLayer il 17 febbraio e sollecitati anche dalla redazione di BleepingComputer, non hanno risposto entro il momento della pubblicazione della notizia, lasciando incertezze sullo stato della patch ufficiale per le versioni correnti.

Punti chiave
  • L'endpoint vulnerabile è formalmente contrassegnato come "autenticato" nel codice, ma il middleware di sicurezza viene eseguito in un punto del flusso successivo al caricamento del modello.
  • Un attaccante può forzare il server a scaricare da Hugging Face un modello malevolo; il codice viene eseguito localmente prima che il server possa rifiutare la richiesta.
  • La vulnerabilità interessa specificamente il deployment Python FastAPI di ChromaDB, introdotta con la versione 1.0.0 e confermata fino alla versione 1.5.8.
  • Le installazioni che utilizzano il frontend Rust o i server non esposti direttamente su Internet (locali o protetti da firewall) non risultano soggette a questo vettore di attacco.

Il bug dell'autenticazione "in ritardo"

La classificazione di gravità massima assegnata a CVE-2026-45829 non deriva dalla complessità dell'exploit, ma dalla sua efficacia contro un controllo di sicurezza che teoricamente esiste. I ricercatori di HiddenLayer hanno individuato che in un endpoint specifico del server Python FastAPI, la verifica dell'identità del chiamante viene valutata in una fase successiva del ciclo di elaborazione della richiesta. Questo ritardo architetturale crea una finestra di esecuzione non recuperabile, permettendo al codice malevolo di girare prima del "no" definitivo del sistema.

Il flusso tecnico procede in tre fasi: l'attaccante invia una richiesta che specifica un modello di embedding ospitato su Hugging Face. Il server, nel processare la richiesta, effettua il download e l'esecuzione del codice necessario a inizializzare il modello. Solo in seguito il sistema verifica le credenziali e rifiuta la richiesta con un codice HTTP 500. Tuttavia, a quel punto, il payload è già stato eseguito nel contesto del processo server, rendendo il rifiuto dell'autenticazione un evento puramente formale e tardivo.

Secondo il flusso descritto dai ricercatori, il caricamento del modello da Hugging Face potrebbe avvalersi di funzionalità di esecuzione remota per attivare il codice malevolo, ma il meccanismo esatto non è dettagliato nelle fonti disponibili. Questa configurazione è particolarmente pericolosa in sistemi di Retrieval-Augmented Generation (RAG), dove il caricamento dinamico di modelli di embedding è una funzionalità legittima. L'architettura stessa di ChromaDB sembra aver privilegiato la fluidità del caricamento delle risorse rispetto alla rigorosa sequenzialità dei controlli di sicurezza.

L'analisi dell'esposizione: tra PyPI e Shodan

I dati di esposizione delineano un panorama di rischio concentrato. Circa il 73% delle istanze visibili su Internet attraverso Shodan esegue una versione di ChromaDB compresa tra la 1.0.0 e la 1.5.8, risultando quindi vulnerabile. Va tuttavia sottolineato che il dato di Shodan si riferisce esclusivamente alle istanze visibili online e non alla base installata totale. Molti deployment aziendali avvengono infatti dietro perimetri di rete sicuri, che impediscono l'accesso diretto agli endpoint API sensibili.

La popolarità del pacchetto su PyPI, con quasi 14 milioni di download mensili, testimonia l'adozione massiccia di ChromaDB nell'ecosistema AI. È importante però non costruire inferenze numeriche dirette tra download e vulnerabilità effettive: molti di questi download riguardano ambienti di sviluppo, container temporanei o test locali. Il rischio reale è limitato a quei server configurati per accettare connessioni dall'esterno senza un'autenticazione a monte (come un reverse proxy) che blocchi la richiesta prima che raggiunga il server FastAPI.

Il paradosso di questa vulnerabilità risiede nella sua visibilità. Mentre milioni di utenti scaricano il pacchetto per scopi legittimi, solo una frazione lo espone in modo non sicuro. Tuttavia, quel 73% rilevato dai ricercatori su Shodan suggerisce che una parte significativa dei server "vivi" su Internet non ha implementato le misure di isolamento necessarie. Questa discrepanza evidenzia una lacuna nella consapevolezza dei rischi legati all'infrastruttura AI, dove la velocità di deployment spesso supera quella della messa in sicurezza.

Chi non è a rischio: le distinzioni architetturali

La falla non è universale all'interno dell'ecosistema ChromaDB. Il frontend Rust, ad esempio, non risulta interessato da CVE-2026-45829. Questa distinzione è fondamentale: la vulnerabilità risiede specificamente nel modo in cui il server Python FastAPI gestisce il ciclo di vita della richiesta HTTP. Gli utenti che hanno già effettuato il passaggio al backend Rust o che utilizzano configurazioni ibride potrebbero essere protetti dal bypass di autenticazione descritto dai ricercatori di HiddenLayer.

Allo stesso modo, le installazioni locali dove l'API non è esposta su un'interfaccia di rete pubblica non presentano la stessa superficie di attacco. Se un server ChromaDB è configurato per ascoltare solo su localhost o è protetto da un Virtual Private Cloud (VPC), un attaccante esterno non può inviare la richiesta malevola necessaria a innescare il caricamento del modello. La protezione in questi casi non deriva dal codice di ChromaDB, ma dalle policy di rete che circondano l'applicazione.

La comprensione di queste differenze è critica per la prioritizzazione degli interventi. Un'azienda che utilizza ChromaDB esclusivamente per test locali o come parte di una pipeline batch isolata ha un profilo di rischio radicalmente diverso rispetto a un fornitore di servizi SaaS che espone l'endpoint di embedding per permettere caricamenti dinamici ai propri utenti. Identificare il tipo di server (Python vs Rust) e il livello di esposizione è il primo passo per una remediation efficace.

Cosa fare adesso

  1. Identificare le istanze Python FastAPI esposte. La priorità assoluta è mappare ogni istanza di ChromaDB che utilizza il backend Python e verificare se l'endpoint API è raggiungibile da Internet. Se il server è esposto, deve essere immediatamente isolato.
  2. Implementare l'autenticazione a livello di rete. Poiché l'autenticazione applicativa di ChromaDB avviene "troppo tardi", è necessario spostare il controllo a monte. Utilizzare un reverse proxy (come Nginx o Apache) o un API Gateway che richieda credenziali valide prima di inoltrare la richiesta al server ChromaDB.
  3. Limitare il download di modelli esterni. Ove possibile, configurare l'ambiente server per impedire connessioni in uscita verso Hugging Face o altri repository di modelli non autorizzati. Questo blocca la fase di "fetching" del modello malevolo indispensabile per l'esecuzione del payload.
  4. Valutare il passaggio al frontend Rust. Data l'assenza di vulnerabilità confermate in quella versione per questo specifico CVE, migrare il deployment verso il backend Rust può rappresentare una soluzione strutturale a lungo termine per chi necessita di esposizione diretta.
"The authentication is not missing, [it's] just in the wrong place. By the time it fires, the model has already been fetched and executed. The server rejects the request, returns a 500, and the attacker's payload has already run." — HiddenLayer, via BleepingComputer

Il silenzio dei maintainer e la governance AI

L'assenza di una risposta ufficiale da parte dei maintainer di ChromaDB, nonostante le molteplici segnalazioni iniziate a febbraio 2026, solleva interrogativi critici sulla governance della sicurezza nell'infrastruttura AI. In un ecosistema dove vector database e framework RAG diventano il cuore pulsante delle applicazioni enterprise, il coordinamento delle patch diventa un elemento di stabilità sistemica. Il ritardo nella comunicazione può lasciare migliaia di utenti in una zona d'ombra pericolosa.

La natura stessa della vulnerabilità suggerisce che la correzione potrebbe richiedere un refactoring non banale della gestione delle richieste in FastAPI. Spostare il controllo di autenticazione prima della risoluzione delle impostazioni del modello potrebbe impattare sulle performance o sulla compatibilità con plugin di terze parti. Tuttavia, il silenzio dei maintainer impedisce alla comunità di adottare contromisure ufficiali, costringendo gli esperti di sicurezza a raccomandare soluzioni di mitigazione esterne come firewall e gateway.

Questa situazione evidenzia il paradosso dell'AI open source: la velocità di innovazione è garantita dalla flessibilità del codice, ma la resilienza ai bug critici richiede processi di risposta agli incidenti più rigorosi. CVE-2026-45829 funge da monito per tutte le organizzazioni che integrano componenti AI: la sicurezza non può essere delegata interamente al software di terze parti, ma deve essere supportata da un'architettura di difesa in profondità che non si fidi ciecamente dei controlli interni dell'applicazione.

Domande frequenti

La versione 1.5.9 di ChromaDB corregge la vulnerabilità?

Non è confermato. Sebbene la versione 1.5.9 sia stata rilasciata circa due settimane prima della pubblicazione del report, le fonti disponibili non indicano esplicitamente se questa release contenga una correzione per CVE-2026-45829. Si consiglia cautela e l'adozione di mitigazioni di rete anche in presenza dell'ultima versione disponibile.

Un server dietro VPN è protetto da questo attacco?

Sì, se l'accesso all'endpoint API di ChromaDB è limitato esclusivamente agli utenti autenticati via VPN, un attaccante esterno non può inviare il payload malevolo. La vulnerabilità richiede che l'attaccante possa raggiungere l'indirizzo IP e la porta del server FastAPI per inoltrare la richiesta di caricamento del modello.

Perché il server restituisce un errore HTTP 500?

L'errore 500 viene restituito perché, dopo aver eseguito il codice del modello (fase in cui avviene l'attacco), il server procede finalmente al controllo di autenticazione. Trovando le credenziali mancanti o errate, interrompe l'operazione legittima e genera l'errore. Purtroppo, a quel punto l'esecuzione del codice malevolo è già avvenuta.

Le informazioni sono state verificate sulle fonti citate e aggiornate al momento della pubblicazione.

Fonti

Link utili

Apri l'articolo su DeafNews