Уразливості у FreeBSD, IPnet та Nucleus NET, пов'язані з помилками при реалізації стиснення в DNS

Дослідницькі групи Forescout Research Labs і JSOF Research опублікували результати спільного дослідження безпеки різних реалізацій схеми стиснення, застосовуваної для упаковки імен, що повторюються, в повідомленнях DNS, mDNS, DHCP і IPv6 RA (упаковка дублюючих частин доменів в повідомленнях, що включають кілька ім. У ході проведеної роботи було виявлено 9 уразливостей, які узагальнені під кодовим ім'ям NAME: WRECK.

Проблеми виявлені у FreeBSD, а також у мережевих підсистемах IPnet, Nucleus NET і NetX, що набули поширення в операційних системах реального часу VxWorks, Nucleus і ThreadX, що застосовуються в пристроях автоматизації, сховищах, медичних приладах, авіоніці, принтерах та споживчій електроніці. Передбачається, що вразливості схильні як мінімум 100 мільйонів пристроїв.

  • Вразливість у FreeBSD (CVE-2020-7461) дозволяла організувати виконання свого коду через відправку атакуючим, що знаходиться в одній локальній мережі з жертвою, спеціально оформленого DHCP-пакету, обробка якого вразливим DHCP-клієнтом призводила до переповнення буфера. Проблему пом'якшувала те, що процес dhclient, у якому присутня вразливість, виконувався зі скинутими привілеями в ізольованому оточенні Capsicum, виходу з якого виявилося ще однієї вразливості.

    Суть помилки в некоректній перевірці параметрів, у пакеті, що повертається DHCP-сервері з 119-опцією DHCP, що дозволяє передати список «domain search» для резолвера. Неправильний розрахунок розміру буфера, необхідного для розміщення розпакованих доменних імен, приводив до запису контрольованої атакуючої інформації за межі виділеного буфера. У FreeBSD проблему усунуто ще у вересні минулого року. Проблема може бути експлуатована лише за наявності доступу до локальної мережі.

  • Вразливість у вбудованому мережевому стеку IPnet, що використовується в RTOS VxWorks, дозволяє потенційно виконати код на стороні DNS-клієнта через неправильну обробку стиснення DNS-повідомлень. Як виявилося, вперше цю вразливість виявили компанії Exodus ще в 2016 році, але так і не було виправлено. Новий запит до компанії Wind River також залишився без відповіді та пристрої з IPnet залишаються вразливими.
  • У TCP/IP стеку Nucleus NET, що підтримується компанією Siemens, виявлено 6 уразливостей, з яких дві могли призвести до віддаленого виконання коду, а чотири до ініціювання відмови в обслуговуванні. Перша небезпечна проблема пов'язана з помилкою під час розпакування стислих повідомлень DNS, а друга з некоректним розбором міток доменних імен. Обидві проблеми призводять до переповнення буфера під час обробки спеціально оформлених відповідей DNS.

    Для експлуатації вразливостей атакуючому достатньо відправити спеціально оформлену відповідь на будь-який легітимний запит, відправлений з вразливого пристрою, наприклад, через проведення MTIM-атаки та вклинювання у трафік між DNS-сервером та жертвою. Якщо атакуючий має доступ до локальної мережі, він може запустити DNS-сервер, який намагається атакувати проблемні пристрої через розсилку запитів mDNS в широкомовному режимі.

  • Вразливість у мережевому стеку NetX (Azure RTOS NetX), розробленому для ThreadX RTOS та відкритого в 2019 році після переходу в руки Microsoft, обмежилася відмовою в обслуговуванні. Проблема викликана помилкою аналізу стислих повідомлень DNS у реалізації резолвера.

З перевірених мережевих стеків, у яких не було знайдено вразливостей, пов'язаних зі стиском повторюваних даних у DNS-повідомленнях, названі проекти lwIP, Nut/Net, Zephyr, UC/TCP-IP, UC/TCP-IP, FreeRTOS+TCP, OpenThread та FNET. При цьому перші два (Nut/Net і lwIP) взагалі не підтримують стиск у DNS-повідомленнях, а решта реалізує цю операцію без помилок. Крім того, зазначається, що раніше ті ж дослідники вже виявляли схожі вразливості у стеках Treck, uIP та PicoTCP.

Джерело: opennet.ru

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