DNS кэшіне жалған деректерді енгізу үшін жаңа SAD DNS шабуылы

Калифорния университетінің зерттеушілер тобы, Riverside SAD DNS шабуылының (CVE-2021-20322) жаңа нұсқасын жариялады, ол өткен жылы CVE-2020-25705 осалдығын блоктау үшін қосылған қорғаныстарға қарамастан жұмыс істейді. Жаңа әдіс негізінен өткен жылғы осалдыққа ұқсас және белсенді UDP порттарын тексеру үшін ICMP пакеттерінің басқа түрін пайдалануда ғана ерекшеленеді. Ұсынылған шабуыл DNS сервер кэшіне жалған деректерді ауыстыруға мүмкіндік береді, оны кэштегі ерікті доменнің IP мекенжайын ауыстыру және доменге сұрауларды шабуылдаушы серверіне қайта бағыттау үшін пайдалануға болады.

Ұсынылған әдіс Linux жүйесіндегі ICMP пакеттік өңдеу механизмінің ерекшеліктеріне қосылуына байланысты тек Linux желілік стекінде жұмыс істейді, ол деректерді жіберу үшін сервер пайдаланатын UDP порт нөмірін анықтауды жеңілдететін деректер ағып кету көзі ретінде әрекет етеді. сыртқы сұрау. Ақпараттың ағып кетуін блоктайтын өзгерістер Linux ядросына тамыз айының соңында қабылданды (түзету ядроның 5.15 және қыркүйек айындағы LTS тармақтарына енгізілген жаңартуларға енгізілген). Түзету Jenkins Hash орнына желілік кэштерде SipHash хэштеу алгоритмін пайдалануға ауысуға дейін барады. Таратулардағы осалдықты түзету күйін мына беттерде бағалауға болады: Debian, RHEL, Fedora, SUSE, Ubuntu.

Мәселені анықтаған зерттеушілердің айтуынша, желідегі ашық шешушілердің шамамен 38%-ы осал болып табылады, соның ішінде OpenDNS және Quad9 (9.9.9.9) сияқты танымал DNS қызметтері. Сервер бағдарламалық жасақтамасына келетін болсақ, Linux серверінде BIND, Unbound және dnsmasq сияқты пакеттерді қолдану арқылы шабуыл жасалуы мүмкін. Мәселе Windows және BSD жүйелерінде жұмыс істейтін DNS серверлерінде пайда болмайды. Шабуылды сәтті жүзеге асыру үшін IP спуфингті пайдалану қажет, яғни. шабуылдаушының ISP жалған бастапқы IP мекенжайы бар пакеттерді блоктамауы талап етіледі.

Еске сала кетейік, SAD DNS шабуылы 2008 жылы Дэн Каминский ұсынған классикалық DNS кэшті улану әдісін блоктау үшін DNS серверлеріне қосылған қорғаныстарды айналып өтеді. Каминский әдісі тек 16 бит болатын DNS сұрау идентификаторы өрісінің кішкентай өлшемін басқарады. Хост атауының спуфингіне қажетті дұрыс DNS транзакция идентификаторын таңдау үшін шамамен 7000 140 сұрау жіберу және 1 мыңға жуық жалған жауаптарды модельдеу жеткілікті. Шабуыл DNS шешушіге жалған IP байланыстыруы және әртүрлі DNS транзакция идентификаторлары бар пакеттердің үлкен санын жіберуге дейін жетеді. Бірінші жауапты кэштеуді болдырмау үшін әрбір жалған жауапта сәл өзгертілген домен атауы бар (2.example.com, 3.example.com, XNUMX.example.com, т.б.).

Шабуылдың осы түрінен қорғау үшін DNS серверінің өндірушілері идентификатордың жеткіліксіз үлкен өлшемін өтейтін ажыратымдылық сұраулары жіберілетін бастапқы желі порттарының сандарын кездейсоқ бөлуді жүзеге асырды. Жалған жауапты жіберу үшін қорғауды енгізгеннен кейін, 16-биттік идентификаторды таңдаудан басқа, 64 мың порттың біреуін таңдау қажет болды, бұл таңдау опцияларының санын 2^32-ге дейін арттырды.

SAD DNS әдісі желі портының нөмірін анықтауды түбегейлі жеңілдетуге және классикалық Каминский әдісіне шабуылды азайтуға мүмкіндік береді. Шабуылдаушы ICMP жауап пакеттерін өңдеу кезінде желілік порттардың белсенділігі туралы ағып кеткен ақпаратты пайдалану арқылы пайдаланылмаған және белсенді UDP порттарына кіруді анықтай алады. Әдіс іздеу опцияларының санын 4 реттік деңгейге азайтуға мүмкіндік береді - 2^16 орнына 2^16+2^32 (131_072_4_294 орнына 967_296). Белсенді UDP порттарын жылдам анықтауға мүмкіндік беретін ақпараттың ағып кетуі фрагментация сұраулары (ICMP Fragmentation Needed жалауы) немесе қайта бағыттау (ICMP Redirect жалауы) бар ICMP пакеттерін өңдеу кодындағы ақаудан туындайды. Мұндай пакеттерді жіберу желі стегіндегі кэш күйін өзгертеді, бұл сервердің жауабы негізінде қай UDP порты белсенді, қайсысы белсенді емес екенін анықтауға мүмкіндік береді.

Шабуыл сценарийі: DNS шешушісі домен атауын шешуге тырысқанда, ол доменге қызмет көрсететін DNS серверіне UDP сұрауын жібереді. Шешуші жауапты күтіп тұрған кезде, шабуылдаушы сұрауды жіберу үшін пайдаланылған бастапқы порт нөмірін жылдам анықтай алады және оған жалған жауап жібере алады, IP мекенжайының жалғандығын пайдаланып доменге қызмет көрсететін DNS серверін елестетеді. DNS шешушісі жалған жауапта жіберілген деректерді кэштейді және біраз уақыт домен атауына арналған барлық басқа DNS сұраулары үшін шабуылдаушы ауыстырған IP мекенжайын қайтарады.

Ақпарат көзі: opennet.ru

пікір қалдыру