I clienti di Akamai Hunt interessati hanno già ricevuto una mappatura dettagliata delle risorse vulnerabili con le procedure per la mitigazione.
Analisi riassuntiva
Il 19 dicembre 2025, nelle istanze di MongoDB è stata notata pubblicamente una nuova vulnerabilità che interessa la maggior parte delle implementazioni di MongoDB.
La vulnerabilità, denominata MongoBleed, risiede nella gestione dei messaggi compressi in formato zlib da parte di MongoDB e consente ai client non autenticati di estrapolare la memoria heap non inizializzata dal database.
A questa CVE è stato assegnato un punteggio CVSSv4 di 8,7.
Il 29 dicembre 2025, la CISA (Cybersecurity and Infrastructure Security Agency) ha aggiunto la CVE-2025-14847 al suo catalogo KEV (Known Exploited Vulnerabilities), confermando che questa vulnerabilità viene sfruttata attivamente. Contemporaneamente, i dati telemetrici di Akamai mostrano forme di comunicazione MongoDB approssimativamente nel 62% delle reti aziendali.
In questo blog, viene fornita una descrizione tecnica di MongoBleed, una panoramica delle versioni di MongoDB interessate (insieme all'analisi delle patch) e una guida pratica alla mitigazione, incluse le query di Akamai Guardicore Segmentation Insight che consentono di identificare le risorse vulnerabili.
Dettagli della vulnerabilità
MongoBleed ha avuto origine dal modo in cui MongoDB elabora i messaggi dei protocolli cablati compressi, una funzione che è abilitata per impostazione predefinita.
MongoDB comunica utilizzando messaggi contrassegnati con l'opcode OP_MSG, in cui i payload delle richieste sono codificati in formato binario JSON (BSON). Quando viene inviato un messaggio compresso, il payload OP_MSG originale viene compresso all'interno di una struttura OP_COMPRESSED.
Un messaggio OP_COMPRESSED include il payload OP_MSG e le dimensioni previste del payload non compresso.
struct OP_COMPRESSED {
struct MsgHeader {
int32 messageLength;
int32 requestID;
int32 responseTo;
int32 opCode;
};
int32_t originalOpcode;
int32_t uncompressedSize;
uint8_t compressorId;
char *compressedMessage;
};
Un criminale può manipolare il campo uncompressedSize, rendendolo più grande rispetto alle dimensioni effettive del payload compresso. Poiché questo valore non viene verificato, questa manipolazione comporta un'allocazione del buffer sovradimensionata, che viene popolata con una quantità di memoria heap non inizializzata,
da cui è possibile estrapolare, ad esempio, frammenti di password di testo non crittografato, credenziali, chiavi API o altri dati sensibili memorizzati, a seconda di quanto era presente in precedenza nell'heap.
La fuga di dati viene ulteriormente amplificata dalla logica di gestione degli errori di MongoDB. Se l'oggetto BSON inviato che risulta errato non contiene un valore di terminazione null, il server analizzerà la memoria fino a quando non ne rileva una. Se l'analisi non riesce, il server restituisce una risposta di errore che include il messaggio originale e il contenuto dell'heap.
Al momento della redazione di questo articolo, Shodan segnala la presenza di oltre 213.000 istanze di MongoDB visibili su Internet, mentre Censys segnala più di 87.000 istanze, mettendo in evidenza l'ampia esposizione della vulnerabilità.
Disponibilità di exploit pubblici
Pochi giorni dalla sua divulgazione, è stato pubblicato un exploit attivo su GitHub, che si basa sull'invio ripetuto di richieste compresse errate, consentendo ai criminali di esfiltrare progressivamente notevoli parti della memoria heap.
Versioni interessate
MongoBleed riguarda le seguenti versioni di MongoDB:
8.2.0 - 8.2.2
8.0.0 - 8.0.16
7.0.0 - 7.0.27
6.0.0 - 6.0.26
5.0.0 - 5.0.31
4.4.0 - 4.4.29
Tutte le versioni 3.6, 4.0 e 4.2
Analisi delle patch
La patch a una riga calcola la dimensione del messaggio derivante dalla dimensione di output, invece di fare semplicemente riferimento al valore fornito nel messaggio OP_COMPRESSED dell'oggetto BSON per garantire che non venga assegnata alcuna memoria aggiuntiva oltre le dimensioni effettive del messaggio.
- return {output.length()};
+ return length;
Mitigazione
Aggiornamento ad una versione corretta con patch
Una patch è stata introdotta nelle versioni 8.2.3, 8.0.17, 7.0.28, 6.0.27, 5.0.32 e 4.4.30.
L'aggiornamento ad una di queste versioni risolve completamente la vulnerabilità rilevata.
Ridurre l'esposizione con la segmentazione della rete
Fino a quando non viene applicata una patch, l'esposizione può essere significativamente ridotta tramite la segmentazione:
Bloccando l'accesso Internet in entrata alle istanze MongoDB sulla porta TCP/27017
Effettuando le connessioni solo se provenienti da fonti esplicitamente attendibili
Identificare gli host vulnerabili con Akamai Guardicore Segmentation
Le seguenti query di Akamai Guardicore Segmentation Insight identificano gli host che eseguono istanze MongoDB vulnerabili.
Risorse Linux
WITH LINUX AS (
SELECT DISTINCT name, version, source
FROM deb_packages
WHERE name = 'mongodb-org-server'
UNION ALL
SELECT DISTINCT name, version, source
FROM rpm_packages
WHERE name = 'mongodb-org-server'
),
PARSED AS (
SELECT name, source, version,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 1) AS INTEGER) AS major,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 2) AS INTEGER) AS minor,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 3) AS INTEGER) AS patch
FROM LINUX
)
SELECT name, source, version
FROM PARSED
WHERE
(major = 8 AND minor = 2 AND patch BETWEEN 0 AND 2)
OR
(major = 8 AND minor = 0 AND patch BETWEEN 0 AND 16)
OR
(major = 7 AND minor = 0 AND patch BETWEEN 0 AND 27)
OR
(major = 6 AND minor = 0 AND patch BETWEEN 0 AND 26)
OR
(major = 5 AND minor = 0 AND patch BETWEEN 0 AND 31)
OR
(major = 4 AND minor = 4 AND patch BETWEEN 0 AND 29)
OR
(major = 3 AND minor = 6)
OR
(major = 4 AND minor IN (0, 2))
Risorse Windows
WITH WINDOWS AS (
WITH MONGO_PROGRAMS AS (
SELECT DISTINCT name, version, install_source AS source, REGEX_MATCH(name, 'MongoDB [0-9].*', 0) AS mongo_match
FROM programs
WHERE name LIKE "MongoDB%"
)
SELECT DISTINCT name, version, source
FROM MONGO_PROGRAMS
WHERE LENGTH(mongo_match) > 0
),
PARSED AS (
SELECT name, source, version,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 1) AS INTEGER) AS major,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 2) AS INTEGER) AS minor,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 3) AS INTEGER) AS patch
FROM WINDOWS
)
SELECT name, source, version
FROM PARSED
WHERE
(major = 8 AND minor = 2 AND patch BETWEEN 0 AND 2)
OR
(major = 8 AND minor = 0 AND patch BETWEEN 0 AND 16)
OR
(major = 7 AND minor = 0 AND patch BETWEEN 0 AND 27)
OR
(major = 6 AND minor = 0 AND patch BETWEEN 0 AND 26)
OR
(major = 5 AND minor = 0 AND patch BETWEEN 0 AND 31)
OR
(major = 4 AND minor = 4 AND patch BETWEEN 0 AND 29)
OR
(major = 3 AND minor = 6)
OR
(major = 4 AND minor IN (0, 2))
Disattivare le richieste compresse (mitigazione temporanea)
Se non è possibile aggiornare o segmentare l'istanza, le richieste compresse in formato zlib possono essere disattivate per evitare lo sfruttamento. Per istruzioni dettagliate, potete consultare il documento ufficiale MongoDB Issue Tracker.
Riepilogo
MongoBleed (CVE-2025-14847) è una vulnerabilità MongoDB che consente ai criminali non autenticati di esfiltrare da remoto la memoria heap non inizializzata.
Con gli exploit pubblici disponibili e decine di migliaia di istanze visibili su Internet, il rischio di esfiltrazione dei dati sensibili è immediato. Le organizzazioni che eseguono le versioni interessate devono effettuare l'aggiornamento ad una versione corretta con patch o applicare alcune regole di segmentazione della rete per ridurre al minimo l'esposizione dei dati sensibili.
Tenetevi al passo
L'Akamai Security Intelligence Group continuerà a monitorare, segnalare e creare mitigazioni per minacce come queste per i clienti dell'azienda e per la più vasta comunità della sicurezza. Per tenervi aggiornati sulle ultime novità dell'Akamai Security Intelligence Group, potete consultare la nostra pagina relativa ai lavori di ricerca e seguirci sui social media.
Tag