Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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
dnsmasq-cve-2026 — Ferramenta automatizada de verificação de defeitos para 6 CVEs do dnsmasq (CVE-2026-2291, 4890, 4891, 4892, 4893, 5172) | Kitploit
Ferramentas/GitHubGitHub/jianrongxiao-linksys/dnsmasq-cve-2026
Análise de VulnerabilidadesExploraçãoFuzzingSegurança de RedeTestes de PenetraçãoAnálise de BináriosAnálise de DNS
GitHubjianrongxiao-linksys/dnsmasq-cve-2026

dnsmasq-cve-2026

Ferramenta automatizada de verificação de defeitos para 6 CVEs do dnsmasq (CVE-2026-2291, 4890, 4891, 4892, 4893, 5172)

Ver Repositório
4há 3 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

Ferramenta de Verificação de QA para CVE-2026 do dnsmasq

Ferramenta automatizada de caixa-preta para verificar 6 vulnerabilidades do dnsmasq (maio de 2026). Envia pacotes de ataque para um DUT ativo e reporta PASS/FAIL — sem necessidade de acesso ao código-fonte.

Início Rápido

root@kitploit:~
# Defina o DNS do DUT para o IP WAN do seu laptop via GUI primeiro, depois:
sudo python3 dnsmasq_cve_verify.py --laptop <YOUR_WAN_IP> --dut <DUT_LAN_IP> --dut-pass <SSH_PASS>

# Exemplo:
sudo python3 dnsmasq_cve_verify.py --laptop 10.0.0.211 --dut 192.168.1.1 --dut-pass '12345Asdf@'

CVEs Testados

CVECVSSTipoVetor de AtaqueRecurso Afetado
CVE-2026-22919.2Estouro de buffer no heapRemotoextract_name() — sempre ativo
CVE-2026-51727.5Leitura fora dos limites / falhaRemotoextract_addresses() — sempre ativo
CVE-2026-48907.5DoS por loop infinitoRemotoParsing de bitmap NSEC (--dnssec)
CVE-2026-48915.3Leitura fora dos limites no heapRemotoValidação RRSIG (--dnssec)
CVE-2026-48928.4Estouro de heap → rootLocal/AdjacenteCLID DHCPv6 (--dhcp-script + DHCPv6)
CVE-2026-48935.3Bypass de validaçãoRemotoVerificação de origem ECS (--add-subnet)

Como Funciona Cada Teste

CVE-2026-2291 (Crítico — Estouro de Heap em extract_name)

Causa raiz: union bigname declara char name[MAXDNAME], mas caracteres de escape podem expandir um nome para 2*MAXDNAME+1 bytes, causando estouro de heap.

Método de teste: Envia consultas DNS contendo nomes de domínio com caracteres de bit alto (0x80+) que são escapados internamente como \DDD (4 bytes por byte de entrada). Se o dnsmasq falhar ou parar de responder, está vulnerável.

Comportamento corrigido: Rejeita nomes superdimensionados de forma graciosa (FORMERR/REFUSED) ou usa um buffer ampliado.

CVE-2026-5172 (Alto — Leitura Fora dos Limites em extract_addresses)

Causa raiz: Um campo rdlen falsificado permite que extract_name() avance o ponteiro além do fim do registro. O underflow dos bytes restantes produz um valor enorme → leitura fora dos limites massiva → falha.

Método de teste: Envia respostas DNS com registros CNAME onde rdlen é menor que o nome realmente codificado. Se o dnsmasq falhar, está vulnerável.

Comportamento corrigido: Valida que o ponteiro permaneça dentro do limite declarado de rdlen após extract_name().

CVE-2026-4890 (Alto — Loop Infinito NSEC do DNSSEC)

Causa raiz: O parsing do bitmap de tipos NSEC avança por p[1] em vez de p[1]+2 (falta o tamanho do cabeçalho da janela). Com bitmap_length=0, o ponteiro nunca avança → loop infinito.

Método de teste: Envia um registro NSEC malicioso com window=0, bitmap_length=0. Se o dnsmasq parar de responder a TODAS as consultas (trava, não falha), está vulnerável. Explorável ANTES da validação RRSIG.

Comportamento corrigido: Avança por p[1]+2 e ignora bitmaps de comprimento zero.

CVE-2026-4891 (Moderado — Leitura Fora dos Limites no Heap em RRSIG)

Causa raiz: rdlen em RRSIG não é validado contra o tamanho mínimo (18 + nome do assinante). O comprimento calculado da assinatura sofre underflow para negativo → tratado como enorme → leitura fora dos limites.

Método de teste: Envia registros RRSIG com rdlen=10 (muito abaixo do mínimo de 31+ bytes). Falha = vulnerável.

Comportamento corrigido: Valida rdlen >= fixed_fields + signer_name_length antes de calcular o comprimento da assinatura.

CVE-2026-4892 (Alto — Root Local via CLID DHCPv6)

Causa raiz: CLIDs DHCPv6 (até 65535 bytes) são codificados em hexadecimal via sprintf("%.2x") em daemon->packet (5131 bytes). CLID de 3000 bytes → string hex de 6000 bytes → estouro. O processo auxiliar é executado como root.

Método de teste: Envia DHCPv6 SOLICIT com Client Identifier de 3000 bytes. Requer adjacência IPv6 e --dhcp-script configurado. Falha do auxiliar = vulnerável.

Comportamento corrigido: Trunca ou valida o comprimento do CLID antes da codificação hexadecimal.

Nota: Alguns builds são compilados com -DNO_DHCP6 e NÃO são afetados por este CVE.

CVE-2026-4893 (Moderado — Bypass de Validação de Origem ECS)

Causa raiz: process_reply() passa o comprimento do registro OPT (~23 bytes) em vez do comprimento total do pacote para check_source(). Todas as verificações de limites falham → a função sempre retorna 1 (válido).

Método de teste: Envia consultas DNS com a opção EDNS Client Subnet contendo prefixos de origem falsificados. Se o dnsmasq devolver o ECS sem validação, está vulnerável.

Comportamento corrigido: Passa o comprimento total do pacote para check_source(), permitindo verificações de limites adequadas conforme a RFC 7871, Seção 9.2.

Correção

Atualize para dnsmasq 2.92rel2 (recomendado)

  • Fonte: https://thekelleys.org.uk/dnsmasq/dnsmasq-2.92rel2.tar.xz
  • Patches upstream: https://thekelleys.org.uk/dnsmasq/CVE/

Ferramenta Automatizada de Verificação de Defeitos (dnsmasq_cve_verify.py)

A principal ferramenta de QA. É executada no laptop de teste, envia pacotes de ataque ao DUT e reporta PASS/FAIL claro para cada CVE. Nenhuma modificação do DUT é necessária além de acesso SSH somente leitura para inspeção de estado.

Topologia de Rede

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────┐
│                        Laptop de Teste                               │
│                                                                      │
│   Interface LAN                   Interface WAN                      │
│   <LAPTOP_LAN_IP>                 <LAPTOP_WAN_IP>                   │
│        │                               │                            │
│        │                          ┌────┴──────────────┐             │
│        │                          │ Servidor DNS      │             │
│        │                          │ Malicioso (porta 53)│             │
│        │                          └────┬──────────────┘             │
│        │                               │                            │
└────────┼───────────────────────────────┼────────────────────────────┘
         │ Sub-rede LAN                  │ Sub-rede WAN
         │                               │
┌────────┼───────────────────────────────┼────────────────────────────┐
│        │                               │                            │
│   LAN: <DUT_LAN_IP>              WAN: <DUT_WAN_IP>                  │
│   (gateway LAN)                   (uplink WAN)                      │
│                                                                      │
│              DUT (Roteador Linksys)                                  │
│              dnsmasq (qualquer versão < 2.92rel2)                    │
│                                                                      │
│   resolv-file=/etc/resolv.conf                                      │
│   → nameserver <LAPTOP_WAN_IP>  ← definido via GUI, encaminha para nós │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

Fluxo de dados:
  1. A ferramenta envia consulta DNS ao IP LAN do DUT (porta 53)
  2. O dnsmasq do DUT não consegue resolver localmente → encaminha para LAPTOP_WAN_IP
  3. Nosso servidor malicioso na interface WAN responde com o payload de exploração
  4. O dnsmasq do DUT processa a resposta maliciosa → falha/trava/sobrevive
  5. A ferramenta verifica o estado do DUT via SSH (somente leitura)

Exemplo de configuração (seus IPs serão diferentes):

PapelIP (exemplo)
LAN do laptop192.168.1.254
WAN do laptop10.0.0.211
LAN do DUT192.168.1.1
WAN do DUT10.0.0.214

O requisito principal: O IP WAN do laptop e o IP WAN do DUT devem estar na mesma sub-rede, para que o DUT consiga alcançar o laptop como servidor DNS upstream.

Como Funciona

root@kitploit:~
┌──────────┐     ┌───────────┐     ┌──────────────────┐     ┌──────────┐
│  SETUP   │ ──► │  TRIGGER  │ ──► │  INSPECIONAR     │ ──► │  VEREDITO│
│          │     │           │     │  ESTADO          │     │          │
│ Iniciar  │     │ Enviar    │     │ SSH para o DUT: │     │ PASS:    │
│ servidor │     │ consulta  │     │ - pidof dnsmasq  │     │ sobreviveu│
│ DNS      │     │ DNS para  │     │ - PID mudou?     │     │          │
│ malicioso│     │ DUT→DUT   │     │ - dmesg com     │     │ FAIL:    │
│ na WAN   │     │ encaminha │     │   falha?         │     │ falhou/  │
│ interface│     │ para nós→ │     │ - /var/log/msg   │     │ travou   │
│ (10.0.0. │     │ nós       │     │                  │     │          │
│  211:53) │     │ respondemos│    │ Consulta de      │     │          │
│          │     │ com       │     │ atividade        │     │          │
│          │     │ payload   │     │ (version.bind)   │     │          │
│          │     │ de        │     │                  │     │          │
│          │     │ exploração│     │                  │     │          │
└──────────┘     └───────────┘     └──────────────────┘     └──────────┘

NOTA: A ferramenta NÃO modifica as configurações do DUT. O usuário deve definir o DNS para 10.0.0.211 via GUI.

Procedimento de Teste de QA

Pré-requisitos

  • Laptop de teste com duas interfaces de rede (LAN + WAN)
  • Python 3.6+ com paramiko instalado (pip install paramiko)
  • Acesso SSH ao DUT (credenciais de root)
  • GUI administrativa do DUT acessível

Passo 1: Conexão Física

Conecte o laptop de teste ao DUT com dois cabos:

Porta do LaptopConecta-se aFinalidade
Porta LANPorta LAN do DUTAcesso SSH + envio de consultas DNS ao DUT
Porta WANSub-rede WAN do DUT (ex.: porta do switch/modem upstream)Atuar como servidor DNS upstream

Após conectar, anote os IPs do seu laptop:

root@kitploit:~
# Descubra seus IPs
ip addr show | grep "inet "
# Exemplo de saída:
#   inet 192.168.1.254/24 ...  ← este é seu IP LAN
#   inet 10.0.0.211/24 ...     ← este é seu IP WAN (use este para --laptop)

Passo 2: Definir o DNS do DUT para o Laptop via GUI

  1. Abra um navegador e acesse a página administrativa do DUT:
    • ex.: http://192.168.1.1 ou http://myrouter.local
  2. Faça login com as credenciais de administrador
  3. Navegue até: Connectivity → Internet Settings → Edit (ao lado de IPv4)
  4. Em DNS: selecione Static DNS
  5. Defina DNS 1 para o IP WAN do seu laptop (ex.: 10.0.0.211)
  6. Clique em Apply
  7. Aguarde 5 a 10 segundos para as configurações entrarem em vigor

Passo 3: Executar a Ferramenta

root@kitploit:~
cd /path/to/dnsmasq-cve-2026/

# Execute todos os 6 testes de CVE:
sudo python3 dnsmasq_cve_verify.py --laptop <YOUR_WAN_IP> --dut <DUT_LAN_IP> --dut-pass <SSH_PASSWORD>

# Exemplo:
sudo python3 dnsmasq_cve_verify.py --laptop 10.0.0.211 --dut 192.168.1.1 --dut-pass '12345Asdf@'

A ferramenta irá:

  1. Conectar-se ao DUT via SSH (somente leitura)
  2. Iniciar um servidor DNS malicioso no IP WAN do seu laptop
  3. Verificar se o DUT está encaminhando consultas DNS para ele
  4. Enviar payloads de exploração para cada CVE
  5. Verificar se o dnsmasq falhou ou travou
  6. Reportar PASS/FAIL por CVE

Passo 4: Ler os Resultados

  • PASS = DUT está seguro (recurso não ativo ou sobreviveu ao ataque)
  • FAIL = dnsmasq falhou ou travou (vulnerável!)
  • ERROR = Não foi possível conectar ou o DUT não está encaminhando

Passo 5: Restaurar o DNS do DUT

  1. Volte à GUI administrativa do DUT
  2. Connectivity → Internet Settings → Edit
  3. Em DNS: selecione Automatic (from ISP) ou remova a entrada estática
  4. Clique em Apply

Solução de Problemas

ProblemaSolução
"DUT não está encaminhando consultas para nós"Verifique se o Passo 2 foi feito corretamente. Confira se o IP WAN do laptop corresponde ao que você inseriu na GUI.
"Não foi possível conectar ao DUT"Verifique as credenciais SSH. Tente: ssh [email protected] manualmente.
"Não foi possível vincular a porta 53"Execute com sudo. Ou use --dns-port 5353 (requer configuração manual do DUT).
"Versão: desconhecida"O DUT pode não ter o dnsmasq no caminho padrão. A ferramenta ainda testa corretamente.

Resultados de Teste (2026-05-31)

Plataforma dnsmasq 2.78 (GERAL: PASS)

CVEResultadoMotivo
CVE-2026-2291PASSDNSSEC não compilado
CVE-2026-4890PASSDNSSEC não compilado
CVE-2026-4891PASSDNSSEC não compilado
CVE-2026-4892PASSdnsmasq não está servindo DHCPv6 (servidor DHCPv6 separado em uso)
CVE-2026-4893PASSApenas bug de lógica — sem falha
CVE-2026-5172PASSSobreviveu à exploração (caminho de código vulnerável não está no 2.78)

Plataforma dnsmasq 2.90 (GERAL: PASS)

CVEResultadoMotivo
CVE-2026-2291PASSDNSSEC não compilado
CVE-2026-4890PASSDNSSEC não compilado
CVE-2026-4891PASSDNSSEC não compilado
CVE-2026-4892PASSDHCPv6 não compilado
CVE-2026-4893PASSApenas bug de lógica — sem falha
CVE-2026-5172PASSSobreviveu às variantes de exploração

Conclusão

Todos os roteadores Linksys testados não são praticamente exploráveis para nenhum dos 6 CVEs em suas configurações de build de produção. Os recursos perigosos (DNSSEC, DHCPv6-via-dnsmasq) ou não são compilados ou não estão configurados. Patches ainda são recomendados como defesa em profundidade.

Resultados Esperados

Pré-correção (dnsmasq 2.78, build sem DNSSEC):

CVEResultadoMotivo
CVE-2026-2291PASSDNSSEC não compilado — não explorável
CVE-2026-4890PASSDNSSEC não compilado — não explorável
CVE-2026-4891PASSDNSSEC não compilado — não explorável
CVE-2026-4892PASS/FAILDHCPv6 compilado + dhcp-script ativo
CVE-2026-4893PASSBug de lógica — sem falha (apenas baseado em versão)
CVE-2026-5172PASSCaminho blockdata_expand não está no 2.78

Pré-correção (dnsmasq 2.90 com DNSSEC habilitado):

CVEResultadoMotivo
CVE-2026-2291FAILEstouro de heap via nomes escapados
CVE-2026-4890FAILLoop infinito (trava)
CVE-2026-4891FAILFalha por leitura fora dos limites em RRSIG
CVE-2026-4892PASS/FAILDepende da configuração de DHCPv6 + script
CVE-2026-4893PASSBug de lógica — sem falha
CVE-2026-5172FAILLeitura fora dos limites via rdlen falsificado

Pós-correção (dnsmasq 2.92rel2 ou patches de backport aplicados): Todos os 6 CVEs → PASS

Requisitos

  • Python 3.6+ com paramiko (pip install paramiko)
  • Root/sudo no laptop (para vincular DNS na porta 53)
  • Acesso SSH ao DUT (somente leitura — usado para verificações de estado do processo)
  • Laptop conectado à LAN do DUT (rede 192.168.1.x)

Referência de Opções

FlagPadrãoDescrição
--laptop(obrigatório)IP WAN do laptop (vincula o servidor DNS malicioso aqui)
--dut192.168.1.1IP LAN do DUT (consultas SSH e DNS enviadas aqui)
--dut-userrootNome de usuário SSH do DUT
--dut-pass(solicitado)Senha SSH do DUT
--dns-port53Porta do servidor DNS malicioso
--cvetodos os 6CVE(s) específico(s) a testar (repetível)

Outras Ferramentas

Testador Remoto de Caixa-Preta (test_dnsmasq_cve_remote.py)

Apenas verificação leve de versão — consulta version.bind para determinar se a versão do dnsmasq está abaixo da correção. Sem SSH, sem configuração, sem payloads de exploração.

root@kitploit:~
python3 test_dnsmasq_cve_remote.py 192.168.1.1

Script no Dispositivo (test_dnsmasq_cve_on_device.sh)

É executado diretamente no DUT via SSH/serial. Verifica a versão do binário e as opções de compilação.

root@kitploit:~
scp test_dnsmasq_cve_on_device.sh [email protected]:/tmp/
ssh [email protected] "sh /tmp/test_dnsmasq_cve_on_device.sh"

Servidor DNS Malicioso (malicious_dns_server.py)

Servidor de exploração autônomo para testes manuais. Execute-o, aponte o DNS upstream do DUT para ele e depois dispare consultas para crash-5172.evil.test, crash-2291.evil.test, etc.

root@kitploit:~
sudo python3 malicious_dns_server.py --port 53
# Depois no DUT: configure o upstream → este host
# Depois dispare: dig @192.168.1.1 crash-5172.evil.test

Verificação Após a Correção

Após aplicar os patches e gravar o novo firmware, execute novamente:

root@kitploit:~
sudo python3 dnsmasq_cve_verify.py --laptop <YOUR_WAN_IP> --dut <DUT_LAN_IP> --dut-pass <SSH_PASS>
# Esperado: todos os 6 PASS

Resumo de Requisitos

FerramentaPythonRootSSHRede
dnsmasq_cve_verify.py3.6+ paramikoSim (porta 53)Sim (somente leitura)LAN + WAN para o DUT
test_dnsmasq_cve_remote.py3.6+ stdlibNãoNãoUDP 53 para o DUT
test_dnsmasq_cve_on_device.shN/A (shell)NãoExecutar no DUTN/A
malicious_dns_server.py3.6+ stdlibSim (porta 53)NãoDUT encaminha para nós

Referências

  • ISPreview: https://www.ispreview.co.uk/index.php/2026/05/string-of-dnsmasq-vulnerabilities-threatens-uk-broadband-routers.html
  • Help Net Security: https://www.helpnetsecurity.com/2026/05/12/dnsmasq-vulnerabilities-cve/
  • Patches upstream: https://thekelleys.org.uk/dnsmasq/CVE/
  • Changelog do dnsmasq: https://thekelleys.org.uk/dnsmasq/CHANGELOG
Baixar ferramenta