← back
CVE-2025-14847highunder attackCWE-130

Zlib compressed protocol header length confusion may allow memory read

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 8.7epss 83%
from disclosure to weapon0 days
Published on NVDDec 19
1st PoCJul 30
metasploitDec 19
CISA KEV+10d
exploitation probability
83%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
70 public exploit(s)
Action required by CISAfederal deadline: 2026-01-19

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Summary

CVE-2025-14847 ("MongoBleed") é uma falha de confusão de tamanho no tratamento de cabeçalhos de mensagens comprimidas via zlib no protocolo binário do MongoDB Server, que permite a um cliente não autenticado ler memória heap não inicializada do processo mongod/mongos. A falha ocorre na camada de rede, antes de qualquer verificação de autenticação ou autorização, e afeta virtualmente todas as branches do MongoDB Server, incluindo versões EOL. Está no catálogo KEV da CISA com exploração confirmada e possui PoC pública, módulo Metasploit e template Nuclei.

Technical detail

O protocolo binário do MongoDB usa o opcode OP_COMPRESSED como wrapper para mensagens (tipicamente OP_MSG) comprimidas em trânsito. O cabeçalho OP_COMPRESSED inclui, entre outros campos, o tamanho esperado da mensagem após a descompressão — valor fornecido pelo próprio cliente. O servidor usa esse valor declarado para alocar o buffer de destino da descompressão zlib antes de invocar o decompressor.

O problema (CWE-130, Improper Handling of Length Parameter Inconsistency) é que, se o payload comprimido de fato se expande para um número de bytes menor do que o declarado no cabeçalho, apenas parte do buffer alocado é escrita pelo zlib; o restante permanece com conteúdo residual de alocações heap anteriores. Código subsequente no pipeline de processamento de mensagens confia no tamanho declarado, não no número real de bytes escritos pela descompressão, e esse buffer parcialmente não inicializado acaba sendo tratado como dado de mensagem válido.

Como essa etapa de decodificação ocorre no caminho de recebimento de rede, antes de autenticação, autorização e execução de query, o bug independe de credenciais, roles ou configuração de acesso a bancos/coleções — a única pré-condição real é que a porta do mongod/mongos esteja acessível e que a compressão zlib seja negociável pelo servidor.

O impacto no vetor CVSS (VC:H, mas VI:N/VA:N) reflete que a falha é puramente de confidencialidade: não há corrupção de dados nem indisponibilidade diretamente associada, apenas exposição de memória heap do processo do servidor de banco de dados.

How it’s exploited

O vetor de exploração é remoto e pré-autenticação: basta estabelecer uma conexão TCP com a porta do MongoDB e negociar/enviar uma mensagem OP_COMPRESSED usando o compressor zlib com um cabeçalho cujo tamanho declarado de descompressão seja maior do que o payload comprimido efetivamente produz ao ser expandido. O servidor decodifica esse payload e retorna dados que incluem os bytes residuais do heap, sem exigir usuário, senha, sessão prévia ou interação humana (AC:L, PR:N, UI:N no vetor CVSS 4.0).

Na prática, o conteúdo vazado depende do estado de memória do processo mongod no momento — pode conter fragmentos de credenciais, tokens de sessão, strings de conexão ou dados de consultas recentes de outros clientes, mas isso não é garantido em toda tentativa; a exploração é essencialmente uma leitura repetida que amplia a chance de capturar dado sensível conforme a reutilização de heap acontece.

A vulnerabilidade está no catálogo KEV da CISA desde 29/12/2025 (prazo de correção: 19/01/2026), confirmando exploração ativa observada. Existe PoC pública (repositório github.com/joe-desimone/mongobleed, referenciado no thread de oss-security), além de módulo Metasploit e template Nuclei já disponíveis, o que baixa a barreira de exploração para praticamente qualquer atacante com acesso de rede ao serviço.

Versions

Affected
MongoDB Server v7.0 anterior a 7.0.28; v8.0 anterior a 8.0.17; v8.2 anterior a 8.2.3; v6.0 anterior a 6.0.27; v5.0 anterior a 5.0.32; v4.4 anterior a 4.4.30; todas as versões v4.2 (>= 4.2.0); todas as versões v4.0 (>= 4.0.0); todas as versões v3.6 (>= 3.6.0). Segundo o Jira do MongoDB, especificamente: 8.2.0–8.2.2, 8.0.0–8.0.16, 7.0.0–7.0.26, 6.0.0–6.0.26, 5.0.0–5.0.31, 4.4.0–4.4.29.
Fixed in
8.2.3, 8.0.17, 7.0.28, 6.0.27, 5.0.32 e 4.4.30. Branches 3.6, 4.0 e 4.2 são EOL e não recebem patch — remediação exige upgrade para uma branch suportada.

How to protect

A correção definitiva é atualizar para as versões corrigidas por branch: 8.2.3, 8.0.17, 7.0.28, 6.0.27, 5.0.32 ou 4.4.30, conforme a linha em uso. Para as branches 3.6, 4.0 e 4.2, que são end-of-life, o fornecedor não emitiu patch — a única remediação é migrar para uma branch suportada e corrigida.

Se a atualização imediata não for possível, o próprio fornecedor recomenda desabilitar o compressor zlib no servidor, iniciando mongod/mongos com a opção networkMessageCompressors ou net.compression.compressors configurada para excluir explicitamente zlib (por exemplo, usando snappy,zstd ou disabled). Isso remove o caminho de código vulnerável, mas tem custo: perda do ganho de banda da compressão zlib e possível fallback para tráfego sem compressão em clientes que só oferecem esse compressor.

Controles de acesso a nível de aplicação — autenticação, RBAC, restrição por usuário/coleção — NÃO mitigam a falha, porque o código vulnerável executa antes de qualquer verificação de autenticação. Restringir a exposição de rede (firewall, bind em interface privada, isolamento de rede) reduz a superfície de ataque mas não é uma correção reconhecida pelo fornecedor; a única mitigação oficial além do upgrade é a desativação do compressor zlib.

How to detect

Como a falha ocorre na camada de decodificação do protocolo binário, antes de qualquer log de autenticação, o mongod normalmente não gera evidência aplicacional direta de uma tentativa de exploração — não há um evento de auditoria nativo confiável para esse ataque. A detecção prática depende de inspeção de tráfego de rede: procurar mensagens OP_COMPRESSED com compressorId indicando zlib em que o tamanho declarado de descompressão (uncompressedSize) diverge do tamanho real do payload comprimido correspondente, ou usar as assinaturas já publicadas no template Nuclei e no módulo Metasploit como referência de padrão de exploração. Monitorar conexões não autenticadas e de curta duração à porta do MongoDB, seguidas de respostas anômalas, é o sinal indireto mais acessível.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
Mismatched length fields in Zlib compressed protocol headers may allow a read of uninitialized heap memory by an unauthenticated client. This issue affects all MongoDB Server v7.0 prior to 7.0.28 versions, MongoDB Server v8.0 versions prior to 8.0.17, MongoDB Server v8.2 versions prior to 8.2.3, MongoDB Server v6.0 versions prior to 6.0.27, MongoDB Server v5.0 versions prior to 5.0.32, MongoDB Server v4.4 versions prior to 4.4.30, MongoDB Server v4.2 versions greater than or equal to 4.2.0, MongoDB Server v4.0 versions greater than or equal to 4.0.0, and MongoDB Server v3.6 versions greater than or equal to 3.6.0.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
public PoCs found70
githubgithub.com/Black1hp/mongobleed-scanner36githubgithub.com/cybertechajju/CVE-2025-14847_Expolit31githubgithub.com/ProbiusOfficial/CVE-2025-1484725githubgithub.com/onewinner/CVE-2025-1484714githubgithub.com/Security-Phoenix-demo/mongobleed-exploit-CVE-2025-1484713githubgithub.com/chinaxploiter/CVE-2025-14847-PoC4githubgithub.com/joshuavanderpoll/CVE-2025-148473githubgithub.com/franksec42/mongobleed-exploit-CVE-2025-148473githubgithub.com/alexcyberx/CVE-2025-14847_Expolit2githubgithub.com/peakcyber-security/CVE-2025-148472githubgithub.com/nma-io/mongobleed2githubgithub.com/CadGoose/MongoBleed-CVE-2025-14847-Fully-Automated-scanner1githubgithub.com/waheeb71/CVE-2025-148471githubgithub.com/sakthivel10q/CVE-2025-148471githubgithub.com/NoNameError/MongoBLEED---CVE-2025-14847-POC-1githubgithub.com/InfoSecAntara/CVE-2025-14847-MongoDB1githubgithub.com/lincemorado97/CVE-2025-148471githubgithub.com/FurkanKAYAPINAR/CVE-2025-14847-MongoBleed-Exploit1githubgithub.com/dawnsmithcyber/azure-vulnerability-remediation-project1githubgithub.com/AdolfBharath/mongobleed1githubgithub.com/shokribardiya/CVE-2025-14847-mongobleed0githubgithub.com/tunahantekeoglu/MongoDeepDive0githubgithub.com/KingHacker353/CVE-2025-14847_Expolit0githubgithub.com/saereya/CVE-2025-14847---MongoBleed0githubgithub.com/JemHadar/MongoBleed-DFIR-Triage-Script-CVE-2025-148470githubgithub.com/14mb1v45h/CYBERDUDEBIVASH-MONGODB-DETECTOR-v20260githubgithub.com/kuyrathdaro/cve-2025-148470githubgithub.com/vfa-tuannt/CVE-2025-148470githubgithub.com/j0lt-github/mongobleedburp0githubgithub.com/Rishi-kaul/CVE-2025-14847-MongoBleed0githubgithub.com/Systemhaus-Schulz/MongoBleed-CVE-2025-148470githubgithub.com/ElJoamy/MongoBleed-exploit0githubgithub.com/keraattin/Mongobleed-Detector-CVE-2025-148470githubgithub.com/im-hanzou/mongobleed0githubgithub.com/sahar042/CVE-2025-148470githubgithub.com/pedrocruz2202/mongobleed-scanner0githubgithub.com/pedrocruz2202/pedrocruz2202.github.io0githubgithub.com/sakthivel10q/sakthivel10q.github.io0githubgithub.com/amnnrth/CVE-2025-148470githubgithub.com/sho-luv/MongoBleed0githubgithub.com/0xBlackash/CVE-2025-148470vulncheckvulncheck.com/xdb/fe706894a1a9unverifiedvulncheckvulncheck.com/xdb/52d82b1418a7unverifiedvulncheckvulncheck.com/xdb/7bec0bc91cd8unverifiedvulncheckvulncheck.com/xdb/d932733b46e3unverifiedvulncheckvulncheck.com/xdb/181477ab83b1unverifiedvulncheckvulncheck.com/xdb/a49c59c0e531unverifiedvulncheckvulncheck.com/xdb/db6becc2eb44unverifiedvulncheckvulncheck.com/xdb/f4566076abb2unverifiedvulncheckvulncheck.com/xdb/70d85c77436bunverifiedvulncheckvulncheck.com/xdb/a4c0f261204funverifiedvulncheckvulncheck.com/xdb/7ad9d08496b2unverifiedvulncheckvulncheck.com/xdb/91956412657dunverifiedvulncheckvulncheck.com/xdb/e36c882b2d40unverifiedvulncheckvulncheck.com/xdb/8e708050ef93unverifiedvulncheckvulncheck.com/xdb/ddb87b41e095unverifiedvulncheckvulncheck.com/xdb/e31e64b6b94dunverifiedvulncheckvulncheck.com/xdb/ca2660a74092unverifiedvulncheckvulncheck.com/xdb/7f5a8a61dceeunverifiedvulncheckvulncheck.com/xdb/8c5a46767f5dunverifiedvulncheckvulncheck.com/xdb/cc9776783586unverifiedvulncheckvulncheck.com/xdb/c72b6137f65cunverifiedvulncheckvulncheck.com/xdb/b4df1eeb4a8eunverifiedvulncheckvulncheck.com/xdb/4ef756de9b3funverifiedvulncheckvulncheck.com/xdb/e3cc60307323unverifiedvulncheckvulncheck.com/xdb/7ccc79f37b95unverifiedvulncheckvulncheck.com/xdb/5d99c938f82dunverifiedvulncheckvulncheck.com/xdb/5c0359da676bunverifiedvulncheckvulncheck.com/xdb/bcaf58f61476unverifiedvulncheckvulncheck.com/xdb/c735cd3246ebunverified
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.