В драйвере PXE-Base Codeкомпонент прошивки, который позволяет серверам и устройствам загружаться по коду, скачанному из локальной сети из состава TianoCore EDK IIоткрытая кодовая база, из которой производители оборудования и облачные провайдеры создают UEFI-прошивку нашли переполнение буфера — CVE-2026-97631идентификатор уязвимости переполнения буфера в драйвере сетевой загрузки с оценкой серьёзности 9.5 из 10. Ошибка живёт в коде 16 лет и срабатывает при обработке ICMP-сообщений об ошибках во время сетевой загрузки: сообщение длиннее 504 байт записывает данные за пределы поля в приватной структуре контекста драйвера. Последствия — от зависания загрузки до исполнения кода в ring 0самый привилегированный уровень исполнения CPU — самом привилегированном уровне CPU.
Что именно изменилось
Драйвер NetworkPkg/UefiPxeBcDxe, отвечающий за загрузку по сети, держит открытым запрос на приём ICMP-сообщений об ошибках и копирует каждое принятое сообщение в фиксированное поле Mode.IcmpError размером 504 байта. Границы в цикле копирования проверяются неверно в обоих обработчиках — для IPv4 и для IPv6: для сообщения длиннее 504 байт байты всё равно копируются в поле, а указатель назначения сдвигается на накопленную длину, а не на длину отдельного фрагмента. В результате слишком длинное сообщение пишет управляемые атакующим байты за границей поля. Ничто раньше на пути приёма длину сообщения не ограничивает.
Обработчиков два, потому что драйвер принимает сообщения об ошибках в двух вариантах сетевого протокола — IPv4 и IPv6; каждый из них разбирает своё сообщение и копирует его в то же поле. Обработчик — это процедура отложенной обработки (DPC, deferred procedure call): она вызывается не в момент прихода пакета, а позже, когда драйвер доходит до разбора накопленных сообщений, и именно в ней выполняется копирование.
Доставить вредоносную ошибку можно простым unicast-пакетомпакетом, адресованным напрямую одному получателю, а не группе устройств с любого сетевого расстояния на IP-адрес целевого устройства — при условии, что пакет пришёл во время последовательности PXE-загрузки. Атакующий может подвесить загрузку, вызвав отказ в обслуживании, а зная сборку прошивки — внедрить «поддельное событие», исполняющее код на CPU в среде UEFI в ring 0. «Поддельное событие» — это сконструированное атакующим содержимое, которое прошивка принимает за собственное событие и передаёт на исполнение процессору; поскольку код при этом выполняется в среде UEFI-прошивки, он получает ring 0 — самый привилегированный уровень CPU.
Предыстория
Уязвимость пополняет длинный список ранее найденных дыр в UEFI или тесно связанном с ним коде — отсюда формулировка yet another forever dayещё одна «вечная» уязвимость: ошибка, которая из-за повсеместности кода останется жить в системах, снятых с поддержки. По словам HD Moore, из-за повсеместности CVE-2026-97631 это, вероятно, «вечная» ошибка, которая останется жить в системах, снятых с поддержки.
Раскрытие вышло внеплановым. AMI опубликовала pull request с описанием уязвимости и кодом исправления, после чего участники TianoCore Project выпустили публичный advisory. Изначально раскрытие планировалось на январь в рамках скоординированного раскрытия.
Почему это сделали и почему это важно
Критичность определяется расположением ошибки: TianoCore EDK II — открытая кодовая база, из которой производители оборудования и облачные провайдеры собирают UEFI-прошивку. Почти все поставщики UEFI, включая AMI, Insyde и Phoenix, широко используют этот эталонный код; форк Microsoft Project Muусиленный вариант EDK2 от Microsoft тоже содержал уязвимый компонент.
Публично доступный код исправления упрощает задачу: продвинутым хакерам станет тривиально понять, как срабатывает уязвимость, и построить рабочие эксплойты. При этом патчинг UEFI на миллионах конечных устройств, проданных тысячами производителей и облачных провайдеров, громоздок и долог.
Moore указывает на дополнительный риск: атакующий может перехватить поток выполнения в момент, когда загрузка ещё имеет доступ к TPMдоверенный платформенный модуль, хранящий ключи и измерения безопасности, что позволяет сломать шифрование диска при кратковременном сетевом доступе или при краже устройства. Эксплойты обходят процессы аттестации, криптографически подтверждающие удалённым серверам безопасность оборудования.
Что это меняет на практике
Исправление — базовое изменение кода, которое затем разворачивается как обновление BIOS/UEFI. В отличие от обходов Secure Bootрежима проверки подписи загрузчика, при котором прошивка запускает только подписанные компоненты в загрузчике, здесь не нужны отзыв ключей и обновление управления ключами pk/kek/db/dbxнаборов ключей и баз подписей прошивки: платформенного ключа, ключа обмена ключами и баз разрешённых и запрещённых подписей. Простоя можно избежать: исправление настраивает капсульное обновлениедоставку образа прошивки, который применяется при следующей перезагрузке прошивки при перезагрузке, а саму перезагрузку можно отложить до ближайшей штатной.
Эксплойт не универсален: атакующему нужно угадывать конкретные адреса в целевой системе, поэтому его приходится настраивать под каждую модель, версию и конфигурацию — адреса меняются вместе с ними.
Пострадавшим советуют обратиться к производителю прошивки за указаниями и по возможности временно отключить сетевую загрузку. Включать TPM и Secure Boot и следить за журналами на признаки попыток эксплуатации стоит всегда, хотя от этой угрозы перечисленные средства не защищают.
Ограничения и открытые вопросы
Уязвимость не затрагивает домашних и малых офисных пользователей и всех, кто загружается только с дисков. Она применима лишь к организациям, чьи машины загружаются из локальных сетей или из интернет-ресурсов, и только если прошивка опирается на EDK2, а не на другую эталонную реализацию, и использует PXE — включённый по умолчанию.
Для эксплуатации нужен некоторый контроль над локальной сетью: это «a prerequisite», что ограничивает круг атакующих инсайдерами, государствами или операторами программ-вымогателей, получившими низкоуровневый доступ внутрь сети для повышения прав. Свидетельств, что CVE-2026-97631 даёт первоначальную точку входа в сеть, пока нет.
Кроме того, атакующий должен попасть в окно в несколько секунд, когда компьютер слушает сетевой адаптер в ожидании PXE-трафика, и достучаться до него ICMP-трафиком в это окно. Для ресурсов за фронтендами вроде CloudFlare или балансировщиков это затруднено: на ICMP отвечает фронтенд, не передавая сообщения бэкенду.
Arm заявила, что CVE-2026-97631 напрямую не применима к её продуктовому портфелю. При этом прошивка Arm, как и у Intel, во многом заимствует из EDK2, и TianoCore документировала эту зависимость. Некоторые платформы могут быть свободны от кода EDK2, но пользователям всех серверов разумно проверить, затрагивает ли их уязвимость. AMD, Phoenix Technologies, AMI, Microsoft и Amazon на вопросы не ответили на момент публикации; представители TianoCore Project тоже. Без конкретных ответов о том, используют ли эти организации EDK2, невозможно сказать, какие устройства затронуты и что делать.