În diferitele implementări ale protocolului DNSSEC au fost identificate două vulnerabilități care afectează rezolverele DNS BIND, PowerDNS, dnsmasq, Knot Resolver și Unbound. Vulnerabilitățile permit provocarea unui atac de tip denial of service asupra rezolverelor DNS care efectuează validarea utilizând DNSSEC, din cauza generării unei sarcini mari pe CPU, care împiedică procesarea altor cereri. Pentru a efectua un atac, este suficient să se trimită către un rezolver DNS care folosește DNSSEC o cerere care duce la interogarea unei zone DNS special concepute pe serverul atacatorului.
Problemele identificate:
- CVE-2023-50387 (numele de cod KeyTrap) — atunci când se face referire la zone DNS special concepute, duce la un atac de denial of service din cauza generării unei sarcini semnificative pe CPU și a duratei mari de execuție a verificărilor DNSSEC. Pentru a efectua atacul, este necesar să se plaseze pe un server DNS controlat de atacator o zonă de domeniu cu configurații dăunătoare, precum și să se obțină accesul la această zonă prin intermediul unui server DNS recursiv, al cărui denial of service este provocat de atacator.
Configurările dăunătoare constau în utilizarea pentru zonă a unei combinații de chei conflictuale între ele, înregistrări RRSET și semnături digitale. Încercarea de verificare utilizând aceste chei duce la executarea unor operațiuni consumatoare de resurse, care pot încărca complet CPU-ul și bloca procesarea altor cereri (de exemplu, s-a afirmat că în timpul unui atac asupra BIND, procesarea altor cereri a fost oprită timp de 16 ore).
- CVE-2023-50868 (numele de cod NSEC3) — atac de denial of service din cauza procesării unor calcule semnificative la calcularea hash-urilor în înregistrările NSEC3 (Next Secure v3) în timpul prelucrării unor răspunsuri DNSSEC special concepute. Metoda de atac este similară cu prima vulnerabilitate, cu excepția faptului că pe serverul DNS al atacatorului se creează un set special conceput de înregistrări NSEC3 RRSET.
Se observă că apariția vulnerabilităților menționate mai sus este cauzată de definirea în specificația DNSSEC a posibilității de a trimite serverului DNS toate cheile criptografice disponibile, în condițiile în care rezolverele trebuie să proceseze orice chei primite, până când verificarea nu se finalizează cu succes sau toate cheile primite nu sunt verificate.
Pentru a bloca vulnerabilitățile din rezolvatoare, numărul maxim de chei DNSSEC implicate în procesul de construire a lanțului de încredere este limitat, la fel ca numărul maxim de calcule ale hash-urilor pentru NSEC3, iar tentativele de verificare pentru fiecare RRSET (combinații de chei și semnături) și fiecare răspuns sunt, de asemenea, limitate. server.
Vulnerabilitățile au fost remediate în actualizările Unbound (1.19.1), PowerDNS Recursor (4.8.6, 4.9.3, 5.0.2), Knot Resolver (5.7.1), dnsmasq (2.90) și BIND (9.16.48, 9.18.24 și 9.19.21). Statutul remedierii vulnerabilităților în distribuții poate fi evaluat pe paginile următoare: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware, NetBSD, FreeBSD.
În versiunile serverului DNS BIND 9.16.48, 9.18.24 și 9.19.21 au fost corectate și alte câteva vulnerabilități:
- CVE-2023-4408 — procesarea mesajelor DNS mari poate duce la o încărcare ridicată a CPU-ului.
- CVE-2023-5517 — o solicitare pentru o zonă inversă formatată special poate duce la terminarea neașteptată a procesului din cauza declanșării verificării assert. Problema apare doar în configurații cu setarea „nxdomain-redirect” activată.
- CVE-2023-5679 — definirea recursivă a unui host poate duce la terminarea neașteptată a procesului din cauza declanșării verificării assert pe sistemele cu suport DNS64 activat și cu opțiunile „serve-stale” (setările stale-cache-enable și stale-answer-enable).
- CVE-2023-6516 — solicitările recursiv formatate special pot duce la epuizarea memoriei disponibile procesului.
Sursa: opennet.ro
