Nový útok SAD DNS na vloženie falošných údajov do vyrovnávacej pamäte DNS

Tím vedcov z Kalifornskej univerzity v Riverside zverejnil nový variant útoku SAD DNS (CVE-2021-20322), ktorý funguje aj napriek tomu, že ochrany boli pridané minulý rok na blokovanie zraniteľnosti CVE-2020-25705. Nová metóda je vo všeobecnosti podobná minuloročnej zraniteľnosti a líši sa len v použití iného typu ICMP paketov na kontrolu aktívnych UDP portov. Navrhovaný útok umožňuje nahradenie fiktívnych údajov do vyrovnávacej pamäte servera DNS, pomocou ktorých je možné nahradiť IP adresu ľubovoľnej domény vo vyrovnávacej pamäti a presmerovať požiadavky na doménu na server útočníka.

Navrhovaná metóda funguje iba v linuxovom sieťovom zásobníku kvôli jeho prepojeniu so zvláštnosťami mechanizmu spracovania ICMP paketov v Linuxe, ktorý funguje ako zdroj úniku dát, čo zjednodušuje určenie čísla portu UDP používaného serverom na odoslanie externá požiadavka. Zmeny, ktoré blokujú únik informácií, boli prijaté do linuxového jadra koncom augusta (oprava bola zahrnutá v jadre 5.15 a septembrových aktualizáciách LTS vetiev jadra). Oprava sa scvrkáva na prechod na používanie algoritmu hash SipHash v sieťových vyrovnávacích pamätiach namiesto Jenkins Hash. Stav opravy zraniteľnosti v distribúciách je možné posúdiť na týchto stránkach: Debian, RHEL, Fedora, SUSE, Ubuntu.

Podľa výskumníkov, ktorí identifikovali problém, je zraniteľných asi 38 % otvorených prekladačov v sieti, vrátane populárnych DNS služieb, ako sú OpenDNS a Quad9 (9.9.9.9). Pokiaľ ide o serverový softvér, útok možno vykonať pomocou balíkov ako BIND, Unbound a dnsmasq na serveri Linux. Problém sa neobjavuje na serveroch DNS spustených na systémoch Windows a BSD. Pre úspešné uskutočnenie útoku je potrebné použiť IP spoofing, t.j. vyžaduje sa, aby útočníkov ISP neblokoval pakety s falošnou zdrojovou IP adresou.

Pripomíname, že útok SAD DNS obchádza ochrany pridané na servery DNS, aby zablokoval klasickú metódu otravy vyrovnávacej pamäte DNS, ktorú v roku 2008 navrhol Dan Kaminsky. Kaminského metóda manipuluje s malou veľkosťou poľa ID dotazu DNS, ktoré má iba 16 bitov. Na výber správneho identifikátora transakcie DNS potrebného na spoofing názvu hostiteľa stačí odoslať približne 7000 140 požiadaviek a simulovať približne 1 tisíc fiktívnych odpovedí. Útok sa scvrkáva na odoslanie veľkého počtu paketov s fiktívnou väzbou IP a s rôznymi identifikátormi transakcií DNS do DNS resolvera. Aby sa zabránilo ukladaniu prvej odpovede do vyrovnávacej pamäte, každá fiktívna odpoveď obsahuje mierne upravený názov domény (2.example.com, 3.example.com, XNUMX.example.com atď.).

Na ochranu pred týmto typom útoku výrobcovia serverov DNS implementovali náhodné rozloženie počtu portov zdrojovej siete, z ktorých sa odosielajú požiadavky na rozlíšenie, čím sa kompenzovala nedostatočne veľká veľkosť identifikátora. Po implementácii ochrany na odosielanie fiktívnej odpovede sa okrem výberu 16-bitového identifikátora objavila potreba vybrať jeden zo 64 tisíc portov, čím sa počet možností výberu zvýšil na 2^32.

Metóda SAD DNS umožňuje radikálne zjednodušiť určenie čísla sieťového portu a zredukovať útok na klasickú metódu Kaminsky. Útočník môže odhaliť prístup k nepoužívaným a aktívnym portom UDP tak, že využije uniknuté informácie o aktivite sieťových portov pri spracovaní paketov odpovedí ICMP. Metóda nám umožňuje znížiť počet možností vyhľadávania o 4 rády - 2^16+2^16 namiesto 2^32 (131_072 namiesto 4_294_967_296). Únik informácií, ktoré vám umožňujú rýchlo určiť aktívne porty UDP, je spôsobený chybou v kóde na spracovanie ICMP paketov s požiadavkami na fragmentáciu (príznak ICMP Fragmentation Needed) alebo presmerovanie (príznak ICMP Redirect). Odosielanie takýchto paketov mení stav vyrovnávacej pamäte v sieťovom zásobníku, čo umožňuje na základe odpovede servera určiť, ktorý UDP port je aktívny a ktorý nie.

Scenár útoku: Keď sa prekladač DNS pokúsi preložiť názov domény, odošle dotaz UDP na server DNS obsluhujúci doménu. Kým prekladač čaká na odpoveď, útočník môže rýchlo určiť číslo zdrojového portu, ktorý bol použitý na odoslanie požiadavky, a odoslať naň falošnú odpoveď, pričom sa vydáva za server DNS obsluhujúci doménu pomocou spoofingu IP adresy. DNS resolver uloží údaje odoslané vo falošnej odpovedi do vyrovnávacej pamäte a na nejaký čas vráti IP adresu nahradenú útočníkom pre všetky ostatné DNS požiadavky na názov domény.

Zdroj: opennet.ru

Pridať komentár