Эксперты Quarkslab обнаружили сразу девять уязвимостей, которые затрагивают стек протоколов IPv6 в Tianocore EDK II, опенсорсной эталонной имплементации спецификации UEFI, которая широко применяется на корпоративных компьютерах и серверах. Проблемы получили общее название PixieFail.
Уязвимости связаны с процессом сетевой загрузки PXE, который играет важную роль при развертывании операционных систем в дата-центрах и высокопроизводительных вычислительных средах, а также является стандартной процедурой для загрузки образов ОС из сети.
Баги PixieFail были выявлены в имплементации IPv6 в среде предварительной загрузки (Preboot eXecution Environment, PXE), которая является частью спецификации UEFI. PXE обеспечивает загрузку по сети, а имплементация IPv6 позволяет использовать дополнительные протоколы, тем самым увеличивая область для потенциальных атак.
Девять проблем PixieFail могут использоваться локально, чтобы спровоцировать отказ в обслуживании (DoS), раскрытие информации, удаленное выполнение кода (RCE), отравление кэша DNS и захват сетевых сессий:
- CVE-2023-45229: некорректная обработка опций IA_NA/IA_TA в сообщениях DHCPv6 Advertise, приводящая к целочисленному переполнению и потенциальному нарушению целостности памяти;
- CVE-2023-45230: неправильная обработка длинных опций Server ID в DHCPv6, допускающая переполнение буфера и потенциально приводящая к удаленному выполнению кода или сбоям;
- CVE-2023-45231: неправильная обработка усеченных опций в сообщениях Neighbor Discovery (ND) Redirect, приводящая к out-of-bounds чтению;
- CVE-2023-45232: ошибка в парсинге заголовков IPv6 Destination Options, когда неизвестные опции могут вызвать бесконечный цикл, что приводит к отказу в обслуживании;
- CVE-2023-45233: бесконечный цикл при парсинге опции PadN в заголовке IPv6 Destination Options;
- CVE-2023-45234: переполнение буфера при обработке опции DNS Servers в сообщении DHCPv6 Advertise;
- CVE-2023-45235: ошибка в обработке параметра Server ID из сообщений DHCPv6 proxy Advertise, приводящая к переполнению буфера;
- CVE-2023-45236: стек TCP в EDK II генерирует предсказуемые изначальные порядковые номера (ISN), что делает его восприимчивым к атакам на перехват TCP-сессий;
- CVE-2023-45237: слабый генератор псевдослучайных чисел в сетевом стеке, потенциально способствующий различным сетевым атакам.
Наиболее опасными из перечисленных проблем являются CVE-2023-45230 и CVE-2023-45235, которые позволяют осуществить удаленное выполнение кода, что может привести к полной компрометации системы.
Специалисты Quarkslab уже опубликовали на GitHub PoC-эксплоиты, позволяющие администраторам выявить уязвимые устройства в своей сети.
Хотя эксперты Quarkslab давно сообщили обо всех найденных проблемах поставщикам (благодаря скоординированной работе со специалистами CERT/CC и CERT-FR), ситуация осложняется тем, что уязвимости PixieFail затрагивают имплементацию EDK II UEFI компании Tianocore, а также других производителей, использующих модуль NetworkPkg. В их число входят Microsoft, Arm, Insyde, Phoenix Technologies и American Megatrends (AMI). Кроме того, CERT/CC сообщает, что уязвимости коснулись и продукции Intel.
Хотя изначально EDK2 включен в исходный код ChromeOS, Google уже заявила, что он не используется в серийных Chromebook, и проблемы PixieFail не представляют для них опасности.
Нужно отметить, что уязвимости были раскрыты CERT/CC еще 3 августа 2023 года, а крайний срок публикации информации о них был установлен на 2 ноября 2023 года. Однако из-за сложностей при исправлении проблем, которыми столкнулись сразу несколько поставщиков, CERT/CC неоднократно переносил эту дату: сначала на 1 декабря 2023 года, а затем на 16 января 2024 года.
При этом известно, что некоторые компании просили о более длительной отсрочке, а Microsoft и вовсе настаивала на переносе даты на май 2024 года.
В результате, в настоящее время большинство патчей производителей находятся в состоянии тестирования и не проверены, а компания Tianocore выпустила исправления только для первых семи уязвимостей из списка выше.