Атака NXNSAttack, якая закранае ўсе DNS-рэзалверы

Група даследчыкаў з Тэль-Авіўскага ўніверсітэта і Міждысцыплінарнага цэнтра ў Герцліі (Ізраіль) распрацавала новы метад нападу NXNSAttack (PDF), які дазваляе выкарыстоўваць любыя DNS-рэзалверы ў якасці ўзмацняльнікаў трафіку, якія забяспечваюць ступень узмацнення да 1621 разоў па колькасці пакетаў (на кожны адпраўлены да рэзаверу запыт, можна дамагчыся адпраўкі на сервер ахвяры 1621 запыт) і да 163 разоў па трафіку.

Праблема звязана з асаблівасцямі працы пратакола і закранае ўсе DNS-серверы, якія падтрымліваюць рэкурсіўную апрацоўку запытаў, у тым ліку BIND (CVE-2020-8616), вузел (CVE-2020-12667), PowerDNS (CVE-2020-10995), Windows DNS Server и незвязаны (CVE-2020-12662), а таксама публічныя DNS-сэрвісы Google, Cloudflare, Amazon, Quad9, ICANN і іншых кампаній. Выпраўленне праблемы было скаардынавана з распрацоўшчыкамі DNS-сервераў, якія адначасова выпусцілі абнаўленні з ухіленнем уразлівасці ў сваіх прадуктах. Абарона ад нападу рэалізаваная ў выпусках
Unbound 1.10.1, Knot Resolver 5.1.1, PowerDNS Recursor 4.3.1, 4.2.2, 4.1.16, BIND 9.11.19, 9.14.12, 9.16.3.

Атака грунтуецца на выкарыстанні атакавалым запытаў, якія спасылаюцца на вялікую колькасць раней не сустракаемых фіктыўных NS-запісаў, якім дэлегуецца вызначэнне імя, але без указання ў адказе glue-запісаў з інфармацыяй аб IP-адрасах NS-сервераў. Напрыклад, атакавалы адпраўляе запыт на вызначэнне імя sd1.attacker.com, кантралюючы DNS-сервер, які адказвае за дамен attacker.com. У адказ на зварот рэзаверу да DNS-серверу атакавалага, выдаецца адказ, які дэлегуе вызначэнне адраса sd1.attacker.com DNS-серверу ахвяры праз указанне ў адказе NS-запісаў без дэталізацыі IP NS-сервераў. Паколькі згаданы NS-сервер раней не сустракаўся і яго IP-адрас не пазначаны, рэзалвер спрабуе вызначыць IP-адрас NS-сервера, накіраваўшы запыт да DNS-сервера ахвяры, якая абслугоўвае мэтавы дамен (victim.com).

Атака NXNSAttack, якая закранае ўсе DNS-рэзалверы

Праблема ў тым, што атакавалы можа выдаць у адказе велізарны спіс не паўтаральных NS-сервераў з неіснуючымі фіктыўнымі імёнамі паддаменаў ахвяры (fake-1.victim.com, fake-2.victim.com,… fake-1000.victim.com). Рэзалвер паспрабуе адправіць запыт DNS-серверу ахвяры, але атрымае адказ, што дамен не знойдзены, пасля чаго паспрабуе вызначыць наступны NS-сервер у спісе і так датуль, пакуль не перабярэ ўсе пералічаныя атакавалым NS-запісы. Адпаведна, на адзін запыт атакавалага рэзалверам будзе адпраўлена велізарная колькасць запытаў для вызначэння NS-хастоў. Бо імёны NS-сервераў фармуюцца выпадкова і спасылаюцца на неіснуючыя паддамены, яны не здабываюцца з кэша і кожны запыт атакавалага прыводзіць да шквала запытаў да DNS-серверу, які абслугоўвае дамен ахвяры.

Атака NXNSAttack, якая закранае ўсе DNS-рэзалверы

Даследнікі вывучылі ступень схільнасці да праблемы публічных DNS-рэзалвераў і вызначылі, што пры адпраўцы запытаў рэзаверу CloudFlare (1.1.1.1) можна дамагчыся памнажэння колькасці пакетаў (PAF, Packet Amplification Factor) у 48 разоў, Google (8.8.8.8) — 30 разоў (37.235.1.174) - 50 разоў, OpenDNS (208.67.222.222) - 32 разы. Больш прыкметныя паказчыкі назіраюцца для
Level3 (209.244.0.3) - 273 разы, Quad9 (9.9.9.9) - 415 разоў
SafeDNS (195.46.39.39) - 274 разы, Verisign (64.6.64.6) - 202 разы,
Ultra (156.154.71.1) – 405 разоў, Comodo Secure (8.26.56.26) – 435 разоў, DNS.Watch (84.200.69.80) – 486 разоў, і Norton ConnectSafe (199.85.126.10) – 569 Для сервераў на базе BIND 9.12.3 за рахунак распаралельвання запытаў узровень узмацнення можа даходзіць да 1000. У Knot Resolver 5.1.0 узровень узмацнення складае прыкладна некалькі дзясяткаў разоў (24-48), бо азначэнне NS-імёнаў выконваецца паслядоўна і ўпіраецца ва ўнутранае абмежаванне на лік крокаў дазволу імёнаў, дапушчальных для аднаго запыту.

Вылучаюцца дзве асноўныя стратэгіі абароны. Для сістэм з DNSSEC прапанавана выкарыстоўваць RFC-8198 для прадухілення абыходу кэша DNS, бо запыты адпраўляюцца са выпадковымі імёнамі. Сутнасць метаду ў генерацыі негатыўных адказаў без звароту да аўтарытэтных DNS-сервераў, ужываючы праверку па дыяпазонах праз DNSSEC. Прасцейшым спосабам з'яўляецца абмежаванні колькасці імёнаў, якія можна вызначыць пры апрацоўцы аднаго дэлегаванага запыту, але такі метад можа прывесці да праблем з некаторымі існуючымі канфігурацыямі, бо ліміты не вызначаны ў пратаколе.

Крыніца: opennet.ru

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