Il DNS (Domain Name System) è il sistema che traduce nomi di dominio in indirizzi IP. Nella sua versione originale (RFC 1034/1035, 1987) non prevede alcun meccanismo di sicurezza: le risposte DNS non sono autenticate né cifrate. Questo lo rende vulnerabile a una classe di attacchi che manipolano la risoluzione dei nomi per reindirizzare il traffico verso server malevoli. DNS Security è l’insieme di estensioni e protocolli sviluppati per rimediare a queste lacune.
Minacce al DNS
DNS Spoofing / Cache Poisoning: un attaccante inietta record DNS falsi nella cache di un resolver ricorsivo. Le vittime che interrogano quel resolver ricevono indirizzi IP malevoli per domini legittimi. L’attacco di Kaminsky (2008) ha dimostrato che questa vulnerabilità era sfruttabile su scala globale con relativa facilità, accelerando l’adozione di DNSSEC.
DNS Hijacking: compromissione diretta del resolver o del registrar per modificare i record autoritativi. Più invasivo del cache poisoning, ma con effetti analoghi.
DNS over HTTP/HTTPS exfiltration: uso del DNS come canale covert per estrarre dati o mantenere comunicazioni C2 (command and control) con malware, sfruttando il fatto che il traffico DNS raramente viene bloccato.
DNSSEC
DNSSEC (Domain Name System Security Extensions, RFC 4033–4035) aggiunge firme digitali ai record DNS per garantirne l’integrità e l’autenticità. Non cifra le risposte (il contenuto dei record rimane visibile), ma permette al resolver di verificare che la risposta provenga dall’autorità legittima e non sia stata alterata in transito.
Il meccanismo si basa su una catena di fiducia analoga alla PKI: ogni zona firma i propri record con una chiave privata (ZSK, Zone Signing Key). La chiave pubblica corrispondente è attestata dalla zona genitore tramite un record DS (Delegation Signer), risalendo fino alla zona root firmata da ICANN. Un resolver DNSSEC-validante verifica l’intera catena prima di restituire la risposta.
DNSSEC protegge dall’avvelenamento della cache ma non dalla sorveglianza: le query DNS rimangono visibili a chiunque sia in posizione di intercettare il traffico UDP/53.
DNS over TLS (DoT)
DoT (DNS over TLS, RFC 7858) cifra le query DNS all’interno di una sessione TLS sulla porta 853. Protegge la riservatezza delle query dall’intercettazione da parte di ISP, provider di rete Wi-Fi e avversari in ascolto. Non autentica i record DNS (quello è compito di DNSSEC).
Lo svantaggio principale è che la porta 853 è facilmente identificabile e bloccabile: in ambienti con censura o ispezione del traffico, DoT è riconoscibile.
DNS over HTTPS (DoH)
DoH (DNS over HTTPS, RFC 8484) trasporta le query DNS come richieste HTTPS sulla porta 443. Offre la stessa protezione di riservatezza di DoT ma con un vantaggio operativo: le query DNS sono indistinguibili dal normale traffico HTTPS, rendendo il blocco selettivo molto più difficile.
DoH è supportato nativamente da Chrome, Firefox e i principali sistemi operativi. La sua adozione di massa ha spostato la risoluzione DNS verso resolver centralizzati (Cloudflare 1.1.1.1, Google 8.8.8.8), sollevando preoccupazioni sulla concentrazione dei dati di navigazione e sulla visibilità dei team di sicurezza aziendali.
DNSSEC vs. DoH/DoT
I due approcci risolvono problemi ortogonali e si complementano:
| Meccanismo | Protegge da | Non protegge da |
|---|---|---|
| DNSSEC | Avvelenamento cache, spoofing | Intercettazione delle query |
| DoT / DoH | Intercettazione, sorveglianza | Spoofing (senza DNSSEC) |
Una configurazione robusta li usa entrambi: DNSSEC per l’integrità, DoH/DoT per la riservatezza.