PixieFAIL — уязвимости в сетевом стеке прошивок UEFI, применяемом для PXE-загрузки

В UEFI-прошивках на основе открытой платформы TianoCore EDK2, обычно используемых на серверных системах, выявлено 9 уязвимостей, получивших собирательное кодовое имя PixieFAIL. Уязвимости присутствуют в сетевом стеке прошивок, применяемом для организации сетевой загрузки (PXE). Наиболее опасные уязвимости позволяют неаутентифицированному атакующему организовать удалённое выполнение своего кода на уровне прошивки в системах, допускающих PXE-загрузку с использованием сети IPv6.

Менее опасные проблемы приводят к отказу в обслуживании (блокирование загрузки), утечке информации, отравлению кэша DNS и перехвату TCP-сеансов. Большая часть уязвимостей может быть эксплуатирована из локальной сети, но отдельные уязвимости допускают и атаку из внешней сети. Типовой сценарий атаки сводится к мониторингу трафика в локальной сети и отправке специально оформленных пакетов при выявлении попытки загрузки системы по PXE. Наличие доступа к серверу загрузки или DHCP-серверу не требуется. Для демонстрации техники атаки опубликованы прототипы эксплоитов.

UEFI-прошивки на базе платформы TianoCore EDK2 используются во многих крупных компаниях, облачных провайдерах, ЦОД и вычислительных кластерах. В частности, уязвимый модуль NetworkPkg с реализацией PXE-загрузки, используются в прошивках, развиваемых компаниями ARM, Insyde Software (Insyde H20 UEFI BIOS), American Megatrends (AMI Aptio OpenEdition), Phoenix Technologies (SecureCore), Intel, Dell и Microsoft (Project Mu). Предполагалось, что уязвимости также затрагивают платформу ChromeOS, в репозитории которой имеется пакет EDK2, но компания Google заявила, что данный пакет не используется в прошивках для устройств Chromebook и платформа ChromeOS не подвержена проблеме.

Выявленные уязвимости:

  • CVE-2023-45230 — переполнение буфера в коде клиента DHCPv6, эксплуатируемое через передачу слишком длинного идентификатора сервера (опция Server ID).
  • CVE-2023-45234 — переполнение буфера при обработке опции с параметрами DNS-сервера, передаваемыми в сообщении, анонсирующем наличие сервера DHCPv6.
  • CVE-2023-45235 — переполнение буфера при обработке опции с идентификатором сервера (Server ID) в сообщениях с анонсами прокси-сервера для DHCPv6.
  • CVE-2023-45229 — целочисленное переполнение через нижнюю границу (underflow), проявляющееся при обработке опций IA_NA/IA_TA в сообщениях DHCPv6, анонсирующих DHCP-сервер.
  • CVE-2023-45231 — утечка данных из области вне буфера при обработке сообщений ND Redirect (Neighbor Discovery) с усечёнными значениями опций.
  • CVE-2023-45232 — бесконечное зацикливание при разборе неизвестных опций в заголовке с параметрами точки назначения (Destination Options).
  • CVE-2023-45233 — бесконечное зацикливание при разборе опции PadN в заголовке пакета.
  • CVE-2023-45236 — использование предсказуемых начальных номеров последовательности TCP, позволяющих вклиниться в TCP-соединение.
  • CVE-2023-45237 — использование ненадёжного генератора псевдослучайных чисел, выдающего предсказуемые значения.

Информация об уязвимостях была отправлена в CERT/CC 3 августа 2023 года, а дата раскрытия информации была намечена на 2 ноября. Тем не менее, из-за необходимости скоординированного выпуска исправлений, охватывающего многих производителей, дата публикации была перенесена вначале на 1 декабря, а потом переносилась на 12 декабря и 19 декабря, 2023 года, но в конечном счёте была раскрыта 16 января 2024 года. При этом компания Microsoft просила отложить обнародование сведений до мая.

Источник: http://www.opennet.ru/opennews/art.shtml?num=60449