Новий варіант атаки 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

Додати коментар або відгук