Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
mongobleed — CVE-2025-14847 explicação e laboratório | Kitploit
Ferramentas/GitHubGitHub/adolfbharath/mongobleed
Análise de VulnerabilidadesSegurança de RedeCriptografiaAprendizado e EducaçãoSegurança de Banco de DadosLabs e Prática
GitHubadolfbharath/mongobleed

mongobleed

CVE-2025-14847 explicação e laboratório

Ver Repositório
120há 8 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Laboratório de Vazamento de Compressão do MongoDB (Educacional, Seguro)

Referência CVE : CVE-2025-14847

Este repositório é um laboratório educacional que demonstra o conceito por trás de uma classe de problemas frequentemente descritos como "compressão de enquadramento / divulgação de memória por metadados de tamanho" em protocolos de rede de bancos de dados.

Ele foi escrito para apoiar a compreensão defensiva: como a compressão de rede do MongoDB é negociada e enquadrada, por que os campos de tamanho são importantes e como parsers robustos evitam exposição acidental de memória.

Nota sobre a referência CVE: Este laboratório é estruturado em torno da ideia referenciada como CVE-2025-14847. Este repositório não valida, reproduz ou explora um bug específico de fornecedor, nem alega que qualquer versão específica do MongoDB seja afetada. Ele foca no modo de falha geral (metadados de tamanho incompatíveis em torno de payloads comprimidos) e nas mitigações.

Status da versão (vulnerável vs corrigido)

Este repositório não inclui (e não deve ser usado como) evidência de quais versões do MongoDB são vulneráveis ou corrigidas para qualquer CVE específico.

Para documentar versões "vulneráveis" vs "corrigidas" corretamente para um relatório, use um comunicado oficial do fornecedor / notas de versão para o CVE e cite-o.

Passos práticos para verificar o que você está executando:

  • Versão do contêiner Docker:
    • docker compose exec mongodb mongod --version
    • ou docker compose exec mongodb mongosh --quiet --eval "db.version()"
  • Versão da instalação no host:
    • mongod --version
    • mongosh --quiet --eval "db.version()"

Se você compartilhar o link do comunicado que está usando, posso formatar uma tabela limpa "Afetado / Corrigido" no README sem adivinhar.

O que é a vulnerabilidade (conceitualmente)

Este laboratório ilustra um modo de falha de compressão de enquadramento / incompatibilidade de metadados de tamanho:

  • Mensagens MongoDB são prefixadas por comprimento. Com compressão de rede, um envelope OP_COMPRESSED adiciona mais campos de tamanho (comprimento da mensagem externa, tamanho declarado não comprimido e o comprimento da própria mensagem interna).
  • Se uma implementação confia em qualquer um desses campos de tamanho sem validação rigorosa, ela pode manipular buffers incorretamente durante a descompressão ou análise.
  • Em implementações com bugs, isso pode levar a leituras fora dos limites ou retorno de bytes de buffer não inicializados, que é uma forma pela qual a "divulgação de memória" pode ocorrer.

Consulte protocol_overview.md para a descrição detalhada do enquadramento.

Aviso ético

  • Este projeto é não explorável por design.
  • Ele não inclui lógica armada, código de exploração ou técnicas destinadas a comprometer sistemas.
  • Deve ser executado apenas contra o contêiner Docker local fornecido aqui.
  • Não direcione este código para sistemas que você não possui ou para os quais não possui permissão explícita para testar.

Objetivos de aprendizado

Ao final do laboratório, você deve ser capaz de:

  • Explicar como funciona o enquadramento do protocolo de fio do MongoDB em alto nível.
  • Descrever como a compressão de rede zlib é negociada e aplicada.
  • Entender como comprimento / metadados de tamanho malformados poderiam conceitualmente levar à exposição de memória em uma implementação com bugs.
  • Identificar mitigações práticas: correção de versão, endurecimento de configuração e detecção em rede.

O que este repositório faz (e não faz)

Ele faz:

  • Inicia MongoDB no Docker com compressão zlib habilitada.
  • Usa um cliente Python minúsculo e original para:
    • Enviar um hello não comprimido incluindo compression: ["zlib"]
    • Enviar uma mensagem OP_COMPRESSED corretamente enquadrada usando zlib
    • Registrar tamanhos não comprimidos vs comprimidos e um resumo das respostas do servidor
  • Incluir uma demonstração local de "parser de brinquedo" que mostra como um parser defensivo rejeita metadados de tamanho incompatíveis.

Ele NÃO faz:

  • Criar pacotes maliciosos para exploração no mundo real.
  • Tentar bypass de autenticação.
  • Tentar ler memória arbitrária.

Conteúdo do repositório

  • docker-compose.yml – Executa um contêiner MongoDB com compressão zlib habilitada e exposição apenas no localhost.
  • protocol_overview.md – Protocolo de fio + BSON + fluxo de compressão + explicação conceitual da vulnerabilidade.
  • mitigation.md – Orientação de defesa: correção de versão, configuração e ideias de detecção.
  • lab_probe.py – Sonda original que negocia compressão e registra tamanhos de mensagens com segurança.

Como executar o laboratório com segurança

1) Pré-requisitos

  • Docker Desktop (ou mecanismo Docker compatível)
  • Python 3.10+ (recomendado)

2) Iniciar MongoDB

A partir do diretório deste repositório:

docker compose up -d

Confirme que está em execução:

docker compose ps

3) Executar a sonda

python .\lab_probe.py

Saída esperada:

  • Imprime os compressores negociados a partir do primeiro hello
  • Imprime tamanhos de requisição/resposta
  • Envia um hello comprimido e registra tanto os tamanhos comprimidos quanto descomprimidos da mensagem

4) Executar a demonstração de brinquedo (sem rede)

python .\lab_probe.py --toy-demo

Isso executa apenas verificações locais de análise para ilustrar por que a validação de tamanho é importante.

5) Desligar

docker compose down

Notas de segurança

  • O contêiner está vinculado a 127.0.0.1:27017 no host.
  • Nenhum comportamento de exploração está presente.
  • A sonda impõe limites conservadores (por exemplo, tamanho máximo de mensagem) e valida todos os campos de comprimento.

Baixar ferramenta