Uusi SAD DNS Attack -versio valetietojen korvaamiseksi DNS-välimuistissa

Kalifornian yliopiston Riversiden tutkijaryhmä on julkaissut uuden version SAD DNS -hyökkäyksestä (CVE-2021-20322), joka toimii huolimatta viime vuonna lisätyistä suojauksista, jotka estävät CVE-2020-25705-haavoittuvuuden. Uusi menetelmä on yleisesti ottaen samanlainen kuin viime vuoden haavoittuvuus ja eroaa vain erityyppisten ICMP-pakettien käytöstä aktiivisten UDP-porttien tarkistamiseen. Ehdotettu hyökkäys mahdollistaa kuvitteellisten tietojen korvaamisen DNS-palvelimen välimuistiin, jolla voidaan korvata välimuistissa olevan mielivaltaisen toimialueen IP-osoite ja ohjata pyynnöt toimialueelle hyökkääjän palvelimelle.

Ehdotettu menetelmä toimii vain Linux-verkkopinossa, koska se liittyy Linuxin ICMP-pakettien käsittelymekanismin erityispiirteisiin, mikä toimii tietovuodon lähteenä, joka yksinkertaistaa palvelimen lähettämiseen käyttämän UDP-portin numeron määrittämistä. ulkoinen pyyntö. Tietovuodon estävät muutokset otettiin käyttöön Linux-ytimeen elokuun lopussa (korjaus sisältyi ytimen 5.15- ja syyskuun päivityksiin ytimen LTS-haaroihin). Korjaus tiivistyy siihen, että siirrytään käyttämään SipHash-hajautusalgoritmia verkon välimuistissa Jenkins Hashin sijaan. Jakelujen haavoittuvuuden korjaamisen tilan voi arvioida seuraavilta sivuilta: Debian, RHEL, Fedora, SUSE, Ubuntu.

Ongelman tunnistaneiden tutkijoiden mukaan noin 38 % verkon avoimista ratkaisejista on haavoittuvia, mukaan lukien suositut DNS-palvelut, kuten OpenDNS ja Quad9 (9.9.9.9). Palvelinohjelmistojen osalta hyökkäys voidaan suorittaa käyttämällä paketteja, kuten BIND, Unbound ja dnsmasq Linux-palvelimella. Ongelma ei ilmene DNS-palvelimissa, jotka toimivat Windows- ja BSD-järjestelmissä. Hyökkäyksen onnistuminen edellyttää IP-huijausta, ts. vaaditaan, että hyökkääjän Internet-palveluntarjoaja ei estä paketteja, joissa on väärennetty lähde-IP-osoite.

Muistutuksena, SAD DNS -hyökkäys ohittaa DNS-palvelimiin lisätyt suojaukset estääkseen Dan Kaminskyn vuonna 2008 ehdottaman klassisen DNS-välimuistin myrkytysmenetelmän. Kaminskyn menetelmä manipuloi DNS-kyselyn ID-kentän pientä kokoa, joka on vain 16 bittiä. Oikean isäntänimen huijaukseen tarvittavan DNS-tapahtumatunnisteen valitsemiseksi riittää noin 7000 140 pyynnön lähettäminen ja noin 1 2 kuvitteellisen vastauksen simulointi. Hyökkäys tiivistyy siihen, että DNS-ratkaisuun lähetetään suuri määrä paketteja kuvitteellisella IP-sidoksella ja erilaisilla DNS-tapahtumatunnisteilla. Ensimmäisen vastauksen välimuistin tallentamisen estämiseksi jokainen valevastaus sisältää hieman muokatun toimialueen nimen (3.example.com, XNUMX.example.com, XNUMX.example.com jne.).

Suojautuakseen tämän tyyppisiltä hyökkäyksiltä DNS-palvelinvalmistajat ovat ottaneet käyttöön satunnaisen jakautumisen lähdeverkkoporttien lukumäärälle, joista ratkaisupyyntöjä lähetetään, mikä kompensoi tunnisteen riittämättömän suuren koon. Kun kuvitteellisen vastauksen lähettämisen suojaus toteutettiin, 16-bittisen tunnisteen valinnan lisäksi tuli tarpeen valita yksi 64 tuhannesta portista, mikä lisäsi valintavaihtoehtojen määrän 2^32:een.

SAD DNS -menetelmän avulla voit radikaalisti yksinkertaistaa verkkoportin numeron määritystä ja vähentää hyökkäys klassiseen Kaminsky-menetelmään. Hyökkääjä voi havaita pääsyn käyttämättömiin ja aktiivisiin UDP-portteihin hyödyntämällä vuotanutta tietoa verkkoporttien toiminnasta käsitellessään ICMP-vastauspaketteja. Menetelmän avulla voimme vähentää hakuvaihtoehtojen määrää 4 suuruusluokkaa - 2^16+2^16 2^32 sijasta (131_072 4_294_967_296 sijaan). Tietovuoto, jonka avulla voit määrittää nopeasti aktiiviset UDP-portit, johtuu virheestä koodissa, joka koskee ICMP-pakettien käsittelyä fragmentointipyynnöillä (ICMP Fragmentation Needed -lippu) tai uudelleenohjauksella (ICMP Redirect -lippu). Tällaisten pakettien lähettäminen muuttaa välimuistin tilaa verkkopinossa, jolloin palvelimen vastauksen perusteella voidaan määrittää, mikä UDP-portti on aktiivinen ja mikä ei.

Hyökkäysskenaario: Kun DNS-selvitin yrittää ratkaista toimialueen nimen, se lähettää UDP-kyselyn toimialuetta palvelevalle DNS-palvelimelle. Kun ratkaisija odottaa vastausta, hyökkääjä voi nopeasti määrittää lähdeportin numeron, jota käytettiin pyynnön lähettämiseen, ja lähettää siihen väärennetyn vastauksen, joka esiintyy toimialuetta palvelevana DNS-palvelimena IP-osoitteen huijauksella. DNS-selvijä tallentaa välimuistiin väärennetyssä vastauksessa lähetetyt tiedot ja palauttaa jonkin aikaa IP-osoitteen, jonka hyökkääjä on korvannut kaikille muille verkkotunnuksen DNS-pyynnöille.

Lähde: opennet.ru

Lisää kommentti