Új SAD DNS-támadás hamis adatok beszúrására a DNS-gyorsítótárba

A Riverside-i Kaliforniai Egyetem kutatócsoportja közzétette az SAD DNS-támadás új változatát (CVE-2021-20322), amely a tavaly hozzáadott, a CVE-2020-25705 biztonsági rést blokkoló védelem ellenére is működik. Az új módszer általában hasonlít a tavalyi sérülékenységhez, és csak abban különbözik, hogy más típusú ICMP-csomagokat használnak az aktív UDP-portok ellenőrzésére. A javasolt támadás lehetővé teszi fiktív adatok behelyettesítését a DNS-kiszolgáló gyorsítótárába, amely felhasználható egy tetszőleges tartomány IP-címének cseréjére a gyorsítótárban, és a tartományra irányuló kérések átirányítására a támadó szerverére.

A javasolt módszer csak a Linux hálózati veremben működik, mivel kapcsolódik a Linux ICMP csomagfeldolgozó mechanizmusának sajátosságaihoz, amely adatszivárgás forrásaként működik, ami leegyszerűsíti a szerver által az üzenet küldésére használt UDP port szám meghatározását. külső kérés. Az információszivárgást blokkoló változtatásokat augusztus végén bevezették a Linux kernelbe (a javítást a kernel 5.15-ös és a kernel LTS-ágainak szeptemberi frissítései tartalmazták). A javítás lényege, hogy a Jenkins Hash helyett a SipHash kivonatoló algoritmusra váltunk a hálózati gyorsítótárban. A disztribúciókban lévő sérülékenység javításának állapota a következő oldalakon tekinthető meg: Debian, RHEL, Fedora, SUSE, Ubuntu.

A problémát azonosító kutatók szerint a hálózat nyílt feloldóinak körülbelül 38%-a sebezhető, beleértve az olyan népszerű DNS-szolgáltatásokat, mint az OpenDNS és a Quad9 (9.9.9.9). Ami a szerverszoftvert illeti, a támadás végrehajtható olyan csomagok használatával, mint a BIND, Unbound és dnsmasq Linux szerveren. A probléma nem jelenik meg a Windows és BSD rendszereken futó DNS-kiszolgálókon. A támadás sikeres végrehajtásához szükség van az IP-hamisításra, azaz az IP-hamisításra. szükséges, hogy a támadó internetszolgáltatója ne blokkolja a hamis forrás IP-című csomagokat.

Emlékeztetőül: az SAD DNS-támadás megkerüli a DNS-kiszolgálókhoz adott védelmet, hogy blokkolja a Dan Kaminsky által 2008-ban javasolt klasszikus DNS-gyorsítótár-mérgezési módszert. Kaminsky módszere manipulálja a DNS-lekérdezésazonosító mező apró méretét, amely mindössze 16 bit. A gazdagépnév-hamisításhoz szükséges DNS-tranzakció-azonosító kiválasztásához körülbelül 7000 kérés elküldése és körülbelül 140 ezer fiktív válasz szimulálása elegendő. A támadás abban áll, hogy nagyszámú csomagot küldenek fiktív IP-kötéssel és különböző DNS-tranzakció-azonosítókkal a DNS-feloldónak. Az első válasz gyorsítótárazásának megakadályozása érdekében minden álválasz tartalmaz egy kissé módosított tartománynevet (1.example.com, 2.example.com, 3.example.com stb.).

Az ilyen típusú támadások elleni védelem érdekében a DNS-kiszolgálók gyártói véletlenszerű elosztást alkalmaztak azon forráshálózati portok számában, amelyekről a feloldási kéréseket küldik, ami kompenzálta az azonosító nem kellően nagy méretét. A fiktív válasz küldésére vonatkozó védelem megvalósítása után a 16 bites azonosító kiválasztása mellett szükségessé vált a 64 ezer port közül egy kiválasztása, amivel a kiválasztási lehetőségek száma 2^32-re nőtt.

Az SAD DNS-módszer lehetővé teszi, hogy radikálisan leegyszerűsítse a hálózati portszám meghatározását, és csökkentse a támadást a klasszikus Kaminsky-módszerre. A támadó észlelheti a nem használt és aktív UDP-portokhoz való hozzáférést azáltal, hogy kihasználja a hálózati portok tevékenységére vonatkozó kiszivárgott információkat az ICMP-válaszcsomagok feldolgozása során. A módszer lehetővé teszi, hogy a keresési lehetőségek számát 4 nagyságrenddel csökkentsük – 2^16 helyett 2^16+2^32 (131_072_4_294 helyett 967_296). Az aktív UDP-portok gyors meghatározását lehetővé tevő információszivárgást az ICMP-csomagok töredezettségi kéréssel (ICMP Fragmentation Needed jelző) vagy átirányítással (ICMP Redirect jelző) feldolgozó kódjának hibája okozza. Az ilyen csomagok küldése megváltoztatja a gyorsítótár állapotát a hálózati veremben, ami lehetővé teszi a szerver válasza alapján annak meghatározását, hogy melyik UDP port aktív és melyik nem.

Támadási forgatókönyv: Amikor egy DNS-feloldó megpróbál feloldani egy tartománynevet, UDP-lekérdezést küld a tartományt kiszolgáló DNS-kiszolgálónak. Amíg a feloldó válaszra vár, a támadó gyorsan meghatározhatja a kérés elküldéséhez használt forrásport számát, és hamis választ küldhet rá, IP-címhamisítással kiadva a tartományt kiszolgáló DNS-kiszolgálót. A DNS-feloldó gyorsítótárba helyezi a hamis válaszban küldött adatokat, és egy ideig visszaadja a támadó által helyettesített IP-címet a domain névre vonatkozó összes többi DNS-kérelem esetében.

Forrás: opennet.ru

Hozzászólás