Sono state individuate due vulnerabilità in diverse implementazioni del protocollo DNSSEC che interessano i resolver DNS BIND, PowerDNS, dnsmasq, Knot Resolver e Unbound. Queste vulnerabilità possono causare un'interruzione del servizio per i resolver DNS che eseguono la validazione tramite DNSSEC, provocando un carico elevato sulla CPU che ostruisce l'elaborazione di altre richieste. Per eseguire un attacco, è sufficiente inviare al resolver DNS che utilizza DNSSEC una richiesta che porti a una zona DNS appositamente progettata su un server controllato dall'attaccante.
Problemi identificati:
- CVE-2023-50387 (nome in codice KeyTrap) — l'accesso a zone DNS appositamente progettate provoca interruzioni del servizio a causa di un carico significante sulla CPU e di lunghi tempi di verifica DNSSEC. Per portare a termine l'attacco, è necessario ospitare su un server DNS controllato dall'attaccante una zona con impostazioni dannose e garantire che un server DNS ricorsivo effettui richieste a tale zona, la quale è destinataria dell'interruzione del servizio.
Le impostazioni dannose consistono nell'utilizzo di una combinazione di chiavi, registrazioni RRSET e firme digitali in conflitto tra loro per la zona. Un tentativo di verifica usando queste chiavi porta all'esecuzione di operazioni pesanti in termini di risorse, che possono saturare completamente la CPU e bloccare l'elaborazione di altre richieste (si afferma ad esempio che durante un attacco a BIND si è riusciti a fermare l'elaborazione di altre richieste per 16 ore).
- CVE-2023-50868 (nome in codice NSEC3) — interruzione del servizio a causa di significativi calcoli nella generazione di hash per le registrazioni NSEC3 (Next Secure v3) durante l'elaborazione di risposte DNSSEC appositamente progettate. Il metodo di attacco ricorda la prima vulnerabilità, tranne per il fatto che su un server DNS controllato dall'attaccante viene creato un insieme speciale di registrazioni NSEC3 RRSET.
Si osserva che l'emergere delle vulnerabilità sopra menzionate è stato causato dalla specifica DNSSEC che prevede la possibilità per un server DNS di inviare tutte le chiavi crittografiche disponibili, mentre i resolver devono elaborare tutte le chiavi ricevute finché la verifica non si concluda con successo o tutte le chiavi ricevute non vengano verificate.
Come misure per bloccare le vulnerabilità nei resolver è stato limitato il numero massimo di chiavi DNSSEC coinvolte nel processo di costruzione della catena di fiducia e il numero massimo di calcoli degli hash per NSEC3, oltre a limitare i tentativi ripetuti di verifica per ogni RRSET (combinazioni di chiavi e firme) e per ogni risposta. server.
Le vulnerabilità sono state risolte negli aggiornamenti per Unbound (1.19.1), PowerDNS Recursor (4.8.6, 4.9.3, 5.0.2), Knot Resolver (5.7.1), dnsmasq (2.90) e BIND (9.16.48, 9.18.24 e 9.19.21). Lo stato di risoluzione delle vulnerabilità nelle distribuzioni può essere valutato sulle seguenti pagine: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware, NetBSD, FreeBSD.
Nelle versioni del server DNS BIND 9.16.48, 9.18.24 e 9.19.21 sono state risolte ulteriori vulnerabilità:
- CVE-2023-4408 — l'elaborazione di grandi messaggi DNS può provocare un carico elevato sulla CPU.
- CVE-2023-5517 — una richiesta a una zona inversa appositamente progettata può portare a un crash a causa del fallimento del controllo assert. Il problema si manifesta solo in configurazioni con impostazione ‘nxdomain-redirect’ abilitata.
- CVE-2023-5679 — la definizione ricorsiva di un host può provocare un crash a causa del fallimento del controllo assert sui sistemi che hanno abilitato il supporto DNS64 e ‘serve-stale’ (impostazioni stale-cache-enable e stale-answer-enable).
- CVE-2023-6516 — richieste ricorsive appositamente progettate possono portare all'esaurimento della memoria disponibile per il processo.
Fonte: opennet.ru
