Новы варыянт нападу SAD DNS для падстаноўкі фіктыўных дадзеных у кэш DNS

Група даследнікаў з Каліфарнійскага ўніверсітэта ў Рыверсайдзе апублікавала новы варыянт нападу SAD DNS (CVE-2021-20322), які працуе нягледзячы на ​​абарону, дабаўленую летась для блакавання ўразлівасці CVE-2020-25705. Новы метад у цэлым аналагічны леташняй уразлівасці і адрозніваецца толькі выкарыстаннем іншага тыпу ICMP-пакетаў для праверкі актыўных UDP-партоў. Прапанаваная атака дазваляе ажыццявіць падстаноўку фіктыўных дадзеных у кэш DNS-сервера, што можна выкарыстоўваць для падмены ў кэшы IP-адрасы адвольнага дамена і перанакіраванні зваротаў да дамена на сервер зламысніка.

Прапанаваны метад працаздольны толькі ў сеткавым стэку Linux з-за прывязкі да асаблівасці працы механізму апрацоўкі ICMP-пакетаў у Linux, які выступае крыніцай уцечкі дадзеных, якія спрашчаюць азначэнні нумара UDP-порта, выкарыстанага серверам для адпраўкі вонкавага запыту. Змены, якія блакуюць уцечку інфармацыі, прыняты ў склад ядра Linux у канцы жніўня (выпраўленне ўвайшло ў склад ядра 5.15 і вераснёўскіх абнаўленняў LTS-галінак ядра). Выпраўленне зводзіцца да пераходу на выкарыстанне ў сеткавых кэшах алгарытму хэшыроўні SipHash замест Jenkins Hash. Статус ухілення ўразлівасці ў дыстрыбутывах можна ацаніць на дадзеных старонках: Debian, RHEL, Fedora, SUSE, Ubuntu.

Па дадзеных якія выявілі праблему даследнікаў уразлівасці схільна каля 38% змешчаных у сеткі адчыненых рэзавераў, уключаючы папулярныя DNS-сэрвісы, такія як OpenDNS і Quad9 (9.9.9.9). Што да сервернага ПА, то напад можа быць праведзена пры выкарыстанні на Linux-серверы такіх пакетаў, як BIND, Unbound і dnsmasq. На DNS-серверах, запушчаных з выкарыстаннем Windows і BSD-сістэм, праблема не выяўляецца. Для паспяховага здзяйснення нападу неабходна выкарыстоўваць спуфінг IP, г.зн. патрабуецца каб правайдэр атакавалага не блакаваў пакеты з падробленым зыходным IP-адрасам.

Нагадаем, што напад SAD DNS дазваляе абыйсці абарону, дабаўленую ў DNS-серверы для блакавання класічнага метаду атручвання кэша DNS, прапанаванага ў 2008 годзе Дэнам Камінскі (Dan Kaminsky). Метад Камінскага маніпулюе нязначным памерам поля з ідэнтыфікацыйным нумарам запыту DNS, які складае ўсяго 16 біт. Для падбору карэктнага ідэнтыфікатара DNS-транзакцыі, неабходнага для спуфінгу імя хаста, дастаткова адправіць прыкладна 7000 запытаў і сімуляваць каля 140 тысяч фіктыўных адказаў. Атака зводзіцца да адпраўкі на DNS-рэзалвер вялікай колькасці пакетаў з фіктыўнай прывязкай да IP і з рознымі ідэнтыфікатарамі DNS-транзакцыі. Для прадухілення кэшавання першага адказу ў кожным фіктыўным адказе паказваецца крыху змененае імя дамена (1.example.com, 2.example.com, 3.example.com і да т.п.).

Для абароны ад дадзенага выгляду нападу вытворцы DNS-сервераў рэалізавалі выпадковае размеркаванне нумароў зыходных сеткавых партоў, з якіх адпраўляюцца запыты рэзалвінгу, што кампенсавала нядосыць вялікі памер ідэнтыфікатара. Пасля рэалізацыі абароны для адпраўкі фіктыўнага адказу акрамя падбору 16 бітнага ідэнтыфікатара стала неабходна падабраць і адзін з 64 тысяч портаў, што павялічыла колькасць варыянтаў для падбору да 2^32.

Метад SAD DNS дазваляе кардынальна спрасціць вызначэнне нумара сеткавага порта і звесці напад да класічнага метаду Камінскага. Атакуючы можа вызначыць зварот да невыкарыстоўваных і актыўных UDP-партоў, скарыстаўшыся ўцечкай звестак аб актыўнасці сеткавых партоў пры апрацоўцы зваротных ICMP-пакетаў. Метад дазваляе на 4 парадку скараціць колькасць варыянтаў перабору - 2 ^ 16 +2 ^ 16 замест 2 ^ 32 (131_072 замест 4_294_967_296). Уцечка звестак, якія дазваляюць хутка вызначыць актыўныя UDP-парты, выклікана недапрацоўкай у кодзе апрацоўкі ICMP-пакетаў з запытамі фрагментацыі (сцяг ICMP Fragmentation Needed) або перанакіравання (сцяг ICMP Redirect). Адпраўка падобных пакетаў змяняе стан кэша ў сеткавым стэку, што дазваляе на аснове рэакцыі сервера вызначыць які з UDP-партоў актыўны, а які не.

Сцэнар атакі: Калі DNS-рэзалвер спрабуе вызначыць даменнае імя, ён адпраўляе UDP-запыт на абслуговы дамен DNS-сервер. У момант калі рэзалвер чакае адказу атакавалы можа хутка вызначыць нумар зыходнага порта, які выкарыстоўваўся для адпраўкі запыту, і адправіць на яго падроблены адказ, выдаўшы сябе за абслуговы дамен DNS-сервер, выкарыстаючы спуфінг IP-адрасы. DNS-рэзалвер змесціць у кэш перададзеныя ў падробленым адказе дадзеныя і нейкі час на ўсе іншыя DNS-запыты даменнага імя будзе вяртаць падстаўлены атакавалым IP-адрас.

Крыніца: opennet.ru

Дадаць каментар