Nou atac SAD DNS pentru a introduce date false în memoria cache DNS

O echipă de cercetători de la Universitatea din California, Riverside a publicat o nouă variantă a atacului SAD DNS (CVE-2021-20322) care funcționează în ciuda protecțiilor adăugate anul trecut pentru a bloca vulnerabilitatea CVE-2020-25705. Noua metodă este în general similară cu vulnerabilitatea de anul trecut și diferă doar prin utilizarea unui alt tip de pachete ICMP pentru a verifica porturile UDP active. Atacul propus permite înlocuirea datelor fictive în memoria cache a serverului DNS, care poate fi folosită pentru a înlocui adresa IP a unui domeniu arbitrar în cache și pentru a redirecționa cererile către domeniu către serverul atacatorului.

Metoda propusă funcționează numai în stiva de rețea Linux datorită conexiunii sale la particularitățile mecanismului de procesare a pachetelor ICMP din Linux, care acționează ca o sursă de scurgere de date care simplifică determinarea numărului de port UDP utilizat de server pentru a trimite un cerere externă. Modificările care blochează scurgerea de informații au fost adoptate în nucleul Linux la sfârșitul lunii august (remedierea a fost inclusă în actualizările kernel-ului 5.15 și septembrie ale ramurilor LTS ale nucleului). Remedierea se rezumă la trecerea la utilizarea algoritmului de hashing SipHash în cache-urile de rețea în loc de Jenkins Hash. Starea remedierii vulnerabilității în distribuții poate fi evaluată pe aceste pagini: Debian, RHEL, Fedora, SUSE, Ubuntu.

Potrivit cercetătorilor care au identificat problema, aproximativ 38% dintre rezolutoarele deschise din rețea sunt vulnerabile, inclusiv servicii DNS populare, cum ar fi OpenDNS și Quad9 (9.9.9.9). În ceea ce privește software-ul de server, un atac poate fi efectuat utilizând pachete precum BIND, Unbound și dnsmasq pe un server Linux. Problema nu apare pe serverele DNS care rulează pe sisteme Windows și BSD. Pentru a efectua cu succes un atac, este necesar să utilizați IP spoofing, adică este necesar ca ISP-ul atacatorului să nu blocheze pachetele cu o adresă IP sursă falsă.

Ca o amintire, atacul SAD DNS ocolește protecțiile adăugate serverelor DNS pentru a bloca metoda clasică de intoxicație a cache-ului DNS propusă în 2008 de Dan Kaminsky. Metoda lui Kaminsky manipulează dimensiunea mică a câmpului ID de interogare DNS, care este de numai 16 biți. Pentru a selecta identificatorul corect de tranzacție DNS necesar pentru falsificarea numelui de gazdă, este suficient să trimiteți aproximativ 7000 de solicitări și să simulați aproximativ 140 de mii de răspunsuri fictive. Atacul se rezumă la trimiterea unui număr mare de pachete cu o legătură IP fictivă și cu identificatori de tranzacție DNS diferiți către rezolutorul DNS. Pentru a preveni memorarea în cache a primului răspuns, fiecare răspuns inactiv conține un nume de domeniu ușor modificat (1.example.com, 2.example.com, 3.example.com etc.).

Pentru a se proteja împotriva acestui tip de atac, producătorii de servere DNS au implementat o distribuție aleatorie a numerelor de porturi de rețea sursă din care sunt trimise solicitările de rezoluție, ceea ce a compensat dimensiunea insuficient de mare a identificatorului. După implementarea protecției pentru trimiterea unui răspuns fictiv, pe lângă selectarea unui identificator de 16 biți, a devenit necesară selectarea unuia dintre 64 de mii de porturi, ceea ce a crescut numărul de opțiuni de selecție la 2^32.

Metoda SAD DNS vă permite să simplificați radical determinarea numărului portului de rețea și să reduceți atacul la metoda clasică Kaminsky. Un atacator poate detecta accesul la porturile UDP neutilizate și active profitând de informațiile scurse despre activitatea porturilor de rețea atunci când procesează pachetele de răspuns ICMP. Metoda ne permite să reducem numărul de opțiuni de căutare cu 4 ordine de mărime - 2^16+2^16 în loc de 2^32 (131_072 în loc de 4_294_967_296). Scurgerea de informații care vă permite să determinați rapid porturile UDP active este cauzată de o defecțiune a codului pentru procesarea pachetelor ICMP cu solicitări de fragmentare (marcatorul ICMP Fragmentation Needed) sau redirecționarea (marcatorul ICMP Redirect). Trimiterea unor astfel de pachete modifică starea cache-ului din stiva de rețea, ceea ce face posibilă determinarea, pe baza răspunsului serverului, care port UDP este activ și care nu.

Scenariu de atac: Când un rezolutor DNS încearcă să rezolve un nume de domeniu, trimite o interogare UDP către serverul DNS care deservește domeniul. În timp ce rezolutorul așteaptă un răspuns, un atacator poate determina rapid numărul portului sursă care a fost folosit pentru a trimite cererea și îi poate trimite un răspuns fals, uzurpând identitatea serverului DNS care deservește domeniul folosind falsificarea adresei IP. Rezolvatorul DNS va stoca în cache datele trimise în răspunsul fals și pentru o perioadă de timp va returna adresa IP înlocuită de atacator pentru toate celelalte solicitări DNS pentru numele domeniului.

Sursa: opennet.ru

Adauga un comentariu