Уязвимости NAME:WRECK затрагивают 100 миллионов сетевых и IoT-устройств

Уязвимости NAME:WRECK затрагивают 100 миллионов сетевых и IoT-устройств

Уязвимости NAME:WRECK затрагивают 100 миллионов сетевых и IoT-устройств

Участники проекта Memoria компании Forescout выявили еще девять уязвимостей в стеках TCP/IP, широко используемых в серверах, смарт-устройствах и промышленном оборудовании. Новые проблемы, объединенные под именем NAME:WRECK, связаны с обработкой DNS-трафика и грозят отказом в обслуживании (DoS) либо захватом контроля над уязвимой системой.

Наличие уязвимостей NAME:WRECK подтверждено для четырех из семи новых TCP/IP-стеков, подвергнутых проверке в рамках Project Memoria:

  • FreeBSD (компонент одноименной операционной системы);
  • Nucleus NET (часть Nucleus RTOS);
  • IPnet (обычно используется с VxWorks RTOS);
  • NetX (обычно используется ThreadX RTOS).

Все упомянутые ОС, за исключением разработки VxWorks, работают на миллиардах сетевых и IoT-устройств. С учетом того, что DNS-клиент, как правило, доступен из интернета, площадь атаки в данном случае очень велика. Если хотя бы 1% из 10 млрд таких установок уязвимы, проблема NAME:WRECK, по оценке Forescout, затрагивает как минимум 100 млн устройств, используемых в госсекторе, здравоохранении, промышленном производстве, индустрии развлечений и розничной торговле.

Большинство уязвимостей NAME:WRECK вызваны некорректной реализацией схемы сжатия сообщений, передаваемых по протоколу DNS (RFC 1035, раздел 4.1.4). Эту же проблему исследователи ранее обнаружили в библиотеках Trec TCP/IP, uIP и PicoTCP — на этапах Ripple20 и Amnesia:33.

Почти все новоявленные бреши имеют CVE-идентификаторы; степень их опасности различна. Так, DoS-уязвимость CVE-2020-27738 в Nucleus NET получила 6,5 балла по шкале CVSS, RCE-баг FreeBSD (CVE-2020-7461) — 7,7 балла, а такой же в IPnet (CVE-2016-20009) — 9,8 балла из 10 возможных.

Некоторые уязвимости NAME:WRECK можно использовать лишь из положения «человек посередине» (MitM), другие — ковровой бомбардировкой уязвимых систем умышленно искаженными DNS-запросами.

Патчи вышли для трех библиотек из приведенного выше списка; давнюю уязвимость в IPnet разработчик (Wind  River) так и не удосужился закрыть. Стоит отметить, что выпуска заплатки для таких компонентов мало. Производители сетевых устройств должны интегрировать ее в свои прошивки и предоставить пользователям обновления, а те — не полениться и скачать новую прошивку (OTA-обновление в таких случаях большая редкость).

В итоге процесс латания брешей на местах может длиться годами, и единственным радикальным решением является замена оборудования. К сожалению, далеко не все пользователи осознают, что их сервер, смарт-устройство или принтер использует уязвимый TCP/IP-стек, поэтому необходимость обновления прошивки для них неочевидна.

Баг macOS ломает TCP через 49 дней без перезагрузки

В macOS нашли редкий, но очень неприятный баг: если компьютер работает без перезагрузки примерно 49,7 дня, у него может постепенно умирать TCP. По версии исследователей, проблема связана с переполнением 32-битного счётчика времени в ядре XNU, который используется TCP-подсистемой.

После этого внутренние TCP-таймеры якобы перестают нормально обновляться, соединения в состоянии TIME_WAIT не очищаются, временные порты постепенно заканчиваются, и система в какой-то момент просто перестаёт устанавливать новые TCP-соединения.

При этом ping может продолжать работать, что делает сбой особенно странным. В Photon пишут, что заметили аномалию на своих macOS-машинах, которые круглосуточно используются для мониторинга iMessage-сервисов.

По их описанию, часть узлов после примерно 49 дней 17 часов 2 минут 47 секунд аптайма перестала открывать новые TCP-сессии. После перезагрузки всё возвращалось в норму, но таймер, по сути, запускался заново.

Авторы утверждают, что смогли воспроизвести поведение на двух машинах и связали его с переменной tcp_now в XNU. В открытом репозитории Apple действительно есть TCP-код ядра Darwin/XNU, где используются 32-битные значения времени и логика сравнения временных меток TCP, на которую ссылаются исследователи.

Поведения бага выглядит так: сначала ничего не ломается в лоб, но закрытые TCP-соединения перестают вовремя исчезать из TIME_WAIT. Затем их становится всё больше, временные порты забиваются, новые подключения начинают зависать в SYN_SENT, а сервисы, которым нужны новые TCP-сокеты, начинают сыпаться.

Если эта находка подтвердится, то для обычного пользователя баг вряд ли станет массовой проблемой: большинство устройств на macOS перезагружаются чаще (хотя бы из-за обновлений). А вот для долго работающих Mac mini, билд-серверов, CI/CD-ферм, удалённых рабочих станций и серверных компьютеров, которые могут жить без ребута неделями, история выглядит уже куда серьёзнее.

Если у вас есть компьютер на macOS, который работает неделями без перезагрузки и критичен для сервисов, мы бы посоветовали следить за его аптаймом.

RSS: Новости на портале Anti-Malware.ru