In diverse implementazioni del protocollo DNSSEC sono state identificate due vulnerabilità che riguardano i resolver DNS BIND, PowerDNS, dnsmasq, Knot Resolver e Unbound. Le vulnerabilità consentono il verificarsi di un'interruzione del servizio sui resolver DNS che effettuano validazione tramite DNSSEC, a causa di un alto carico sulla CPU che ostacola l'elaborazione di altre richieste. Per eseguire un attacco è sufficiente inviare al resolver DNS che utilizza DNSSEC una richiesta che porta a una consultazione a una zona DNS appositamente formattata sul server dell'attaccante.
Problemi riscontrati:
- CVE-2023-50387 (nome in codice KeyTrap) — la consultazione di zone DNS appositamente formattate porta a un'interruzione del servizio a causa della creazione di un carico significativo sulla CPU e del lungo tempo di esecuzione della verifica DNSSEC. Per eseguire l'attacco è necessario posizionare su un server DNS controllato dall'attaccante una zona di dominio con impostazioni dannose e ottenere che un server DNS ricorsivo consulti tale zona, il cui servizio è interrotto dall'attaccante.
Le impostazioni dannose consistono nell'utilizzare per la zona una combinazione di chiavi in conflitto, registrazioni RRSET e firme digitali. Il tentativo di verifica utilizzando queste chiavi porta all'esecuzione di operazioni lunghe e dispendiose in termini di risorse, che possono sovraccaricare completamente la CPU e bloccare l'elaborazione di altre richieste (ad esempio, si afferma che durante un attacco a BIND sia stato possibile fermare l'elaborazione di altre richieste per 16 ore).
- CVE-2023-50868 (nome in codice NSEC3) — interruzione del servizio a causa dell'esecuzione di significative operazioni di calcolo per il calcolo degli hash nelle registrazioni NSEC3 (Next Secure v3) durante l'elaborazione di risposte DNSSEC appositamente formattate. Il metodo di attacco è simile alla prima vulnerabilità, tranne per il fatto che viene creato sul server DNS dell'attaccante un insieme appositamente formattato di registrazioni NSEC3 RRSET.
Si segnala che l'emergere delle vulnerabilità sopra menzionate è dovuto alla definizione specificata nella specifica DNSSEC della possibilità per il server DNS di inviare tutte le chiavi crittografiche disponibili, mentre i resolver devono elaborare tutte le chiavi ricevute finché la verifica non viene completata con successo o tutte le chiavi ricevute non vengono verificate.
Come misura per bloccare le vulnerabilità nei resolver, il numero massimo di chiavi DNSSEC coinvolte nel processo di costruzione della catena di fiducia è limitato, così come il numero massimo di calcoli di hash per NSEC3, e sono limitati i tentativi di verifica per ogni RRSET (combinazioni di chiavi e firme) e per ogni risposta. server.
Le vulnerabilità sono state risolte negli aggiornamenti di 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 della 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'analisi di grandi messaggi DNS può portare a un carico elevato della CPU.
- CVE-2023-5517 — una richiesta di zona inversa appositamente formattata può portare a un arresto anomalo a causa di un controllo assert. Il problema si manifesta solo in configurazioni con l'impostazione "nxdomain-redirect" attivata.
- CVE-2023-5679 — la risoluzione ricorsiva di un host può causare un arresto anomalo a causa di un controllo assert su sistemi con supporto attivato per DNS64 e "serve-stale" (impostazioni stale-cache-enable e stale-answer-enable).
- CVE-2023-6516 — richieste ricorsive appositamente formattate possono portare all'esaurimento della memoria disponibile per il processo.
Fonte: opennet.ru
