Vulnerabilità KeyTrap e NSEC3 che interessano la maggior parte delle implementazioni DNSSEC

Sono state identificate due vulnerabilità in varie implementazioni del protocollo DNSSEC, che interessano i risolutori BIND, PowerDNS, dnsmasq, Knot Resolver e Unbound DNS. Le vulnerabilità potrebbero causare un rifiuto di servizio per i risolutori DNS che eseguono la convalida DNSSEC causando un carico elevato della CPU che interferisce con l'elaborazione di altre richieste. Per effettuare un attacco è sufficiente inviare una richiesta a un risolutore DNS tramite DNSSEC, che porta a una chiamata a una zona DNS appositamente progettata sul server dell’aggressore.

Problemi identificati:

  • CVE-2023-50387 (nome in codice KeyTrap) – Quando si accede a zone DNS appositamente progettate, porta a un rifiuto di servizio a causa del carico significativo della CPU e del lungo tempo di esecuzione dei controlli DNSSEC. Per effettuare un attacco è necessario collocare una zona di dominio con impostazioni dannose su un server DNS controllato dall'aggressore e anche garantire che a questa zona acceda un server DNS ricorsivo, il cui Denial of Service l'aggressore cerca .

    Le impostazioni dannose implicano l'utilizzo di una combinazione di chiavi in ​​conflitto, record RRSET e firme digitali per una zona. Tentare di verificare utilizzando queste chiavi comporta operazioni dispendiose in termini di tempo e risorse che possono caricare completamente la CPU e bloccare l'elaborazione di altre richieste (ad esempio, si sostiene che in un attacco a BIND sia stato possibile interrompere l'elaborazione di altre richieste per 16 ore).

  • CVE-2023-50868 (nome in codice NSEC3) è un rifiuto di servizio dovuto a calcoli significativi eseguiti durante il calcolo degli hash nei record NSEC3 (Next Secure v3) durante l'elaborazione di risposte DNSSEC appositamente predisposte. Il metodo di attacco è simile alla prima vulnerabilità, tranne per il fatto che sul server DNS dell'aggressore viene creato un set appositamente progettato di record NSEC3 RRSET.

Si segnala che la comparsa delle suddette vulnerabilità è causata dalla definizione nella specifica DNSSEC della possibilità per il server DNS di inviare tutte le chiavi crittografiche disponibili, mentre i risolutori devono elaborare le eventuali chiavi ricevute fino a quando il controllo non viene completato con successo o tutte le chiavi ricevute sono state verificate.

Come misura per bloccare le vulnerabilità, i risolutori limitano il numero massimo di chiavi DNSSEC coinvolte nel processo di catena di fiducia e il numero massimo di calcoli hash per NSEC3, e limitano anche i tentativi di verifica per ciascun RRSET (combinazione chiave-firma) e ciascuna risposta del server.

Le vulnerabilità sono state corrette 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 .9.19.21 e XNUMX). Lo stato delle vulnerabilità nelle distribuzioni può essere valutato in queste pagine: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware, NetBSD, FreeBSD.

Le versioni 9.16.48, 9.18.24 e 9.19.21 del server DNS BIND hanno inoltre corretto molte altre vulnerabilità:

  • CVE-2023-4408 L'analisi di messaggi DNS di grandi dimensioni può causare un carico elevato della CPU.
  • CVE-2023-5517 - Una richiesta per una zona inversa appositamente predisposta può portare a un arresto anomalo a causa dell'attivazione di un controllo di asserzione. Il problema si presenta solo nelle configurazioni con l'impostazione "nxdomain-redirect" abilitata.
  • CVE-2023-5679 – Il rilevamento host ricorsivo può causare un arresto anomalo a causa dell'attivazione di un controllo di asserzione su sistemi con supporto DNS64 e "serve-stale" abilitato (impostazioni, stale-cache-enable e stale-answer-enable).
  • CVE-2023-6516 Le query ricorsive appositamente predisposte possono causare l'esaurimento della memoria a loro disposizione da parte del processo.

Fonte: opennet.ru

Aggiungi un commento