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 серверлерине кошулган коргоолорду айланып өтөт. Каминскийдин ыкмасы DNS сурамынын ID талаасынын кичинекей өлчөмүн башкарат, ал болгону 16 бит. Хост атын спуфинг үчүн зарыл болгон туура DNS транзакция идентификаторун тандоо үчүн болжол менен 7000 суроо-талаптарды жөнөтүү жана 140 миңге жакын ойдон чыгарылган жоопторду симуляциялоо жетиштүү. Чабуул DNS чечүүчүгө жасалма IP байланышы жана ар кандай DNS транзакция идентификаторлору бар көп сандагы пакеттерди жөнөтүү менен аяктайт. Биринчи жооптун кэштелишине жол бербөө үчүн, ар бир жасалма жооп бир аз өзгөртүлгөн домендик аталышты камтыйт (1.example.com, 2.example.com, 3.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 flag) же кайра багыттоо (ICMP Redirect flag) менен ICMP пакеттерин иштетүү кодундагы мүчүлүштүктөн улам келип чыгат. Мындай пакеттерди жөнөтүү тармактык стектеги кэштин абалын өзгөртөт, бул сервердин жообуна жараша кайсы UDP порту активдүү жана кайсынысы активдүү эмес экенин аныктоого мүмкүндүк берет.

Чабуул сценарийи: DNS чечүүчү домендик аталышты чечүүгө аракет кылганда, ал доменди тейлеген DNS серверине UDP суроосун жөнөтөт. Чечүүчү жооп күтүп жатканда, чабуулчу суроону жөнөтүү үчүн колдонулган булак портунун номерин тез аныктап, ага жасалма жооп жөнөтүп, IP дарегин спуфинг аркылуу доменди тейлеген DNS серверин элестете алат. DNS чечүүчү жасалма жоопто жөнөтүлгөн маалыматтарды кэштейт жана бир канча убакытка чейин домендик аталыш үчүн башка бардык DNS сурамдары үчүн чабуулчу алмаштырган IP дарегин кайтарып берет.

Source: opennet.ru

Комментарий кошуу