A kaliforniai Riverside Egyetem kutatócsoportja közzétette a SAD DNS (CVE-2021-20322) új támadási variánsát, amely a tavaly bevezetett védelem ellenére is működik, hogy blokkolja a CVE-2020-25705 sérülékenységet. Az új módszer alapvetően hasonló a tavalyi sérülékenységhez, és csupán annyiban különbözik, hogy más típusú ICMP-csomagokat használ az aktív UDP-portok ellenőrzésére. A javasolt támadás lehetővé teszi hamis adatok behelyettesítését a DNS-szerver gyorsítótárába, amelyet arra lehet használni, hogy egy tetszőleges domain IP-címét átírja a gyorsítótárban, ezzel a domainhez intézett kéréseket a támadó szerverére irányítja.
A javasolt módszer csak a Linux hálózati veremében működik, mivel a Linuxban az ICMP-csomagok feldolgozási mechanizmusának sajátosságához kötődik, amely az adatszivárgás forrása, egyszerűsítve az UDP-port számának meghatározását, amelyet használtak szerverrel a külső kérés elküldésére. Az információszivárgás blokkolására vonatkozó módosításokat a Linux kernelbe augusztus végén vezették be (a javítás a 5.15-ös kernelbe és a szeptemberi LTS-ág frissítéseibe került). A javítás lényege, hogy a hálózati gyorsítótárakban a SipHash hash algoritmus használatára térnek át a Jenkins Hash helyett. A sérülékenység javításának állapota a disztribúciókban az alábbi oldalakon értékelhető: Debian, RHEL, Fedora, SUSE, Ubuntu.
A problémát azonosító kutatók adatai szerint a hálózaton található nyílt feloldók körülbelül 38%-a érintett, beleértve a népszerű DNS-szolgáltatásokat, mint például az OpenDNS és a Quad9 (9.9.9.9). A szerveroldali szoftver esetében a támadás végrehajtható Linux szerveren olyan csomagok használatával, mint a BIND, Unbound és dnsmasq. Windows és BSD rendszerek használatával futó DNS-szervereken a probléma nem jelentkezik. A támadás sikeres végrehajtásához IP-spoofing szükséges, azaz a támadó szolgáltatójának nem szabad blokkolnia a hamis forrást jelentő IP-címről érkező csomagokat.
Emlékeztetünk, hogy a SAD DNS támadás lehetővé teszi a DNS szerverek által a klasszikus DNS cache poisoning módszer blokkolására bevezetett védelem megkerülését, amelyet 2008-ban Dan Kaminsky javasolt. Kaminsky módszere manipulálja a DNS kérés azonosítószámának mezőjét, amely mindössze 16 bit hosszú. A helyes DNS tranzakciós azonosító kiválasztásához, amely a hosztnév álcázásához szükséges, körülbelül 7000 kérdést kell elküldeni, és körülbelül 140 ezer ál-választ kell szimulálni. A támadás arra összpontosít, hogy a DNS resolverhez sok csomagot küldjön hamis IP társítással és különböző DNS tranzakciós azonosítókkal. Annak megakadályozása érdekében, hogy az első válasz cache-elésre kerüljön, minden hamis válaszban egy kissé megváltoztatott domain nevet (1.example.com, 2.example.com, 3.example.com stb.) adunk meg.
A támadás ezen formája ellen a DNS szerver gyártói a DNS lekérdezésekhez használt kezdő hálózati portok véletlenszerű allokálását valósították meg, ami kompenzálta az azonosító méretének hiányát. A védelem megvalósítása után ahhoz, hogy hamis választ küldjünk, nemcsak a 16 bites azonosítót kellett kitalálni, hanem egy a 64 ezer port közül is, ami a lehetőségek számát 2^32-re növelte.
A SAD DNS módszer drámaian leegyszerűsíti a hálózati port számának meghatározását, és a támadást a Kaminsky klasszikus módszeréhez hasonlóvá zsugorítja. A támadó képes meghatározni a nem használt és aktív UDP portokat, kihasználva a hálózati portok aktivitásáról szóló információk szivárgását az ICMP válaszcsomagok feldolgozása során. Ez a módszer 4 nagyságrendet csökkenti a próbálkozási lehetőségek számát — 2^16+2^16 ahelyett, hogy 2^32 (131_072 a 4_294_967_296 helyett). Az aktivitást lehetővé tevő információk kiszivárgása a fragmentálási ICMP csomagok (ICMP Fragmentation Needed jelzés) vagy az átirányítás (ICMP Redirect jelzés) kezelésében lévő hibák miatt következik be. Az ilyen csomagok küldése megváltoztatja a cache állapotát a hálózati veremben, lehetővé téve a szerver reakciója alapján annak meghatározását, hogy melyik UDP port aktív, és melyik nem.
Támadási forgatókönyv: Amikor a DNS-lerázó megpróbálja meghatározni a domain nevet, UDP-kérdést küld a DNS-szerverhez, amely a domain szolgáltatásáért felelős. Abban a pillanatban, amikor a lerázó várja a választ, a támadó gyorsan meghatározhatja a kérdés küldéséhez használt forráshiport számát, és hamis választ küldhet erre, eladva magát mint a domaint kiszolgáló DNS-szerver, hamisítással. IP addressA DNS-lerázó a hamis válaszban átadott adatokat a gyorsítótárába helyezi, és egy ideig bármilyen más DNS-kérdésre, amely a domain névre vonatkozik, a támadó által megadott IP-címet fogja visszaadni.
Forrás: opennet.ru
