Jauns SAD DNS uzbrukums, lai DNS kešatmiņā ievietotu viltus datus

Pētnieku komanda no Kalifornijas Universitātes Riversaidas ir publicējusi jaunu SAD DNS uzbrukuma variantu (CVE-2021-20322), kas darbojas, neskatoties uz aizsardzību, kas tika pievienota pagājušajā gadā, lai bloķētu ievainojamību CVE-2020-25705. Jaunā metode kopumā ir līdzīga pagājušā gada ievainojamībai un atšķiras tikai ar cita veida ICMP pakešu izmantošanu, lai pārbaudītu aktīvos UDP portus. Piedāvātais uzbrukums ļauj DNS servera kešatmiņā aizstāt fiktīvus datus, kurus var izmantot, lai aizstātu patvaļīga domēna IP adresi kešatmiņā un novirzītu pieprasījumus uz domēnu uz uzbrucēja serveri.

Piedāvātā metode darbojas tikai Linux tīkla stekā, jo tā ir saistīta ar ICMP pakešu apstrādes mehānisma īpatnībām Linux, kas darbojas kā datu noplūdes avots, kas vienkāršo UDP porta numura noteikšanu, ko serveris izmanto, lai nosūtītu ārējs pieprasījums. Izmaiņas, kas bloķē informācijas noplūdi, tika pieņemtas Linux kodolā augusta beigās (labojums tika iekļauts kodola 5.15 un septembra atjauninājumos kodola LTS filiālēm). Labojums ir saistīts ar pāreju uz SipHash jaukšanas algoritma izmantošanu tīkla kešatmiņā, nevis Jenkins Hash. Izplatījumu ievainojamības novēršanas statusu var novērtēt šajās lapās: Debian, RHEL, Fedora, SUSE, Ubuntu.

Saskaņā ar pētnieku, kas identificēja problēmu, aptuveni 38% atvērto atrisinātāju tīklā ir neaizsargāti, tostarp tādi populāri DNS pakalpojumi kā OpenDNS un Quad9 (9.9.9.9). Runājot par servera programmatūru, uzbrukumu var veikt, izmantojot tādas pakotnes kā BIND, Unbound un dnsmasq Linux serverī. Problēma neparādās DNS serveros, kas darbojas operētājsistēmā Windows un BSD sistēmās. Lai veiksmīgi veiktu uzbrukumu, ir jāizmanto IP krāpšanās, t.i. ir nepieciešams, lai uzbrucēja ISP nebloķētu paketes ar viltotu avota IP adresi.

Atgādinām, ka SAD DNS uzbrukums apiet DNS serveriem pievienotās aizsardzības, lai bloķētu klasisko DNS kešatmiņas saindēšanas metodi, ko 2008. gadā ierosināja Dens Kaminskis. Kaminska metode manipulē ar DNS vaicājuma ID lauka nelielo izmēru, kas ir tikai 16 biti. Lai izvēlētos pareizo DNS transakcijas identifikatoru, kas nepieciešams resursdatora vārda viltošanai, pietiek ar aptuveni 7000 pieprasījumu nosūtīšanu un aptuveni 140 tūkstošu fiktīvu atbilžu simulāciju. Uzbrukuma rezultātā DNS atrisinātājam tiek nosūtīts liels skaits pakešu ar fiktīvu IP saistīšanu un dažādiem DNS darījumu identifikatoriem. Lai novērstu pirmās atbildes saglabāšanu kešatmiņā, katra fiktīva atbilde satur nedaudz modificētu domēna nosaukumu (1.example.com, 2.example.com, 3.example.com utt.).

Lai aizsargātu pret šāda veida uzbrukumiem, DNS serveru ražotāji ieviesa nejaušu avota tīkla portu skaita sadalījumu, no kuriem tiek sūtīti izšķirtspējas pieprasījumi, kas kompensēja nepietiekami lielo identifikatora izmēru. Pēc fiktīvas atbildes nosūtīšanas aizsardzības ieviešanas papildus 16 bitu identifikatora izvēlei kļuva nepieciešams izvēlēties vienu no 64 tūkstošiem portu, kas palielināja atlases opciju skaitu līdz 2^32.

SAD DNS metode ļauj radikāli vienkāršot tīkla porta numura noteikšanu un samazināt uzbrukumu līdz klasiskajai Kaminsky metodei. Uzbrucējs var atklāt piekļuvi neizmantotiem un aktīviem UDP portiem, izmantojot noplūdušo informāciju par tīkla portu darbību, apstrādājot ICMP atbildes paketes. Metode ļauj samazināt meklēšanas opciju skaitu par 4 kārtībām - 2^16+2^16, nevis 2^32 (131_072, nevis 4_294_967_296). Informācijas noplūdi, kas ļauj ātri noteikt aktīvos UDP portus, izraisa ICMP pakešu apstrādes ar fragmentācijas pieprasījumiem (ICMP Fragmentation Needed karodziņš) vai novirzīšanas (ICMP Redirect karodziņš) kods. Šādu pakešu nosūtīšana maina kešatmiņas stāvokli tīkla stekā, kas ļauj, pamatojoties uz servera atbildi, noteikt, kurš UDP ports ir aktīvs un kurš nav.

Uzbrukuma scenārijs: kad DNS atrisinātājs mēģina atrisināt domēna nosaukumu, tas nosūta UDP vaicājumu DNS serverim, kas apkalpo domēnu. Kamēr atrisinātājs gaida atbildi, uzbrucējs var ātri noteikt avota porta numuru, kas tika izmantots pieprasījuma nosūtīšanai, un nosūtīt uz to viltotu atbildi, uzdodoties par DNS serveri, kas apkalpo domēnu, izmantojot IP adreses viltošanu. DNS atrisinātājs kešatmiņā saglabās viltus atbildē nosūtītos datus un kādu laiku atgriezīs IP adresi, kuru uzbrucējs ir aizstājis visiem citiem domēna nosaukuma DNS pieprasījumiem.

Avots: opennet.ru

Pievieno komentāru