
MongoBleed: Ferramenta de Descoberta de Vazamento de Memória para CVE-2025-14847
MongoBleed é uma ferramenta de auditoria de segurança de alto desempenho projetada para detectar e demonstrar a CVE-2025-14847. Esta vulnerabilidade permite que um atacante remoto não autenticado vaze fragmentos de memória heap não inicializada de um servidor MongoDB ao explorar uma falha de incompatibilidade de comprimento na lógica de descompressão do zlib.
Para testar este script com segurança, utilize o seguinte docker-compose.yml para criar uma instância vulnerável do MongoDB 8.2.2.
Execute a instância com:
docker-compose up -d
Certifique-se de ter o Python 3.8+ instalado. Nenhuma biblioteca externa é necessária (utiliza socket, zlib e concurrent.futures integrados).
Varredura Básica
python mongobleed.py --host 127.0.0.1 --port 27017
Opções Avançadas
python mongobleed.py --host 127.0.0.1 --threads 50 --range 100 10000 --output leak_dump.bin
O script envia uma mensagem OP_COMPRESSED (opcode 2012) manipulada. Ele informa um comprimento não comprimido falso para o payload. O servidor MongoDB aloca um buffer heap do tamanho "mentiroso", descomprime uma pequena quantidade de dados nele e, em seguida, erroneamente devolve o buffer inteiro não inicializado ao cliente.
A única maneira permanente de resolver a CVE-2025-14847 é atualizar o binário do MongoDB para uma versão que inclua uma correção para a lógica de validação de comprimento do OP_COMPRESSED.
Correção Permanente (Atualização)
Aplique os patches oficiais do MongoDB. Essas versões incluem uma verificação obrigatória para garantir que o tamanho dos dados descomprimidos corresponda ao campo uncompressedSize no cabeçalho da mensagem.
Se uma atualização imediata não for possível devido a requisitos de disponibilidade, você pode bloquear o vetor de ataque modificando a configuração do servidor.
Desativar o Compressor Vulnerável (Recomendado)
A vulnerabilidade é específica da implementação do zlib. Você pode desativar o zlib e forçar o servidor a usar snappy ou zstd, que não são afetados por esse bug específico de heap-over-read.
Via Linha de Comando: Reinicie a instância mongod com a seguinte flag (observe a exclusão do zlib):
mongod --networkMessageCompressors snappy,zstd
Via Arquivo de Configuração (mongod.conf):
net:
compression:
compressors: snappy,zstd
Esta ferramenta é apenas para fins educacionais e de testes de segurança autorizados. O acesso não autorizado a sistemas de computador é ilegal. O autor não é responsável por qualquer uso indevido desta ferramenta. Atualize suas instâncias do MongoDB imediatamente para as versões 8.2.3+ ou 8.0.17+.
| Ramo Principal | Versão Segura Recomendada |
|---|
| MongoDB 8.2 | Atualize para 8.2.3 ou posterior |
| MongoDB 8.0 | Atualize para 8.0.17 ou posterior |
| MongoDB 7.0 | Atualize para 7.0.28 ou posterior |
| MongoDB 6.0 | Atualize para 6.0.27 ou posterior |
| MongoDB 5.0 | Atualize para 5.0.32 ou posterior |
| MongoDB 4.0 | Atualize para 4.4.30 ou posterior |