
MongoDB CVE-2025-14847 Scanner de Vazamento de Memória Heap | Vulnerabilidade OP_COMPRESSED zlib | Ferramenta para Bug Bounty & Red Team
MongoBleed é um scanner PoC de alto desempenho para CVE-2025-14847, uma vulnerabilidade de divulgação de memória heap pré-autenticação no driver C++ do MongoDB. A ferramenta foi projetada para identificação rápida de instâncias vulneráveis em grandes intervalos de rede.
A vulnerabilidade decorre de uma leitura fora dos limites (OOB) no tratamento de mensagens OP_COMPRESSED pelo protocolo de fio do MongoDB.
Quando um servidor recebe um pacote OP_COMPRESSED, ele depende do campo uncompressedSize fornecido pelo atacante para alocar um buffer para descompressão. Se os dados realmente descomprimidos forem significativamente menores que o uncompressedSize declarado, o driver não trunca ou limpa o buffer. Como resultado, o servidor retorna todo o bloco de memória alocado, que pode conter dados de heap não inicializados, potencialmente expondo informações sensíveis, como tokens de sessão, ponteiros internos ou fragmentos de outras consultas de banco de dados.
asyncio para varredura de alta concorrênciavulnerable_targets.txtgit clone https://github.com/Black1hp/mongobleed-scanner/
cd mongobleed-scanner
Nenhuma dependência externa necessária (apenas a Biblioteca Padrão do Python).
Uso básico:
python3 mongobleed.py -i targets.txt
Configuração avançada:
python3 mongobleed.py -i targets.txt -c 100 -t 5
-i : Arquivo de entrada contendo alvos (IP, domínio ou IP:porta)-c : Nível de concorrência (padrão: 50)-t : Tempo limite de conexão em segundos (padrão: 5)O scanner identifica a vulnerabilidade explorando uma incompatibilidade de tamanho durante a fase de descompressão BSON:
OP_COMPRESSED personalizado contendo uma pequena carga útil compactada em zlib, por exemplo, 16-30 bytes.uncompressedSize no cabeçalho do pacote é intencionalmente definido para um valor muito maior (por exemplo, 64KB).MessageLength que corresponda ao tamanho grande do buffer solicitado, em vez do tamanho real da carga útil descomprimida.uncompressedSize fornecido pelo atacante para definir o comprimento da resposta. Como não atualiza esse comprimento com os bytes reais escritos durante a descompressão, ele transmite cegamente todo o buffer de heap alocado — incluindo memória não inicializada — de volta ao cliente.Nota: O vídeo acima demonstra o scanner identificando múltiplas instâncias vulneráveis e capturando fragmentos de heap em tempo real.
Black1hp Pesquisador de Segurança | Caçador de Bugs | Red Teamer
Esta ferramenta é destinada apenas para testes de segurança autorizados e fins de pesquisa. O autor não se responsabiliza por qualquer uso não autorizado ou danos decorrentes desta ferramenta.