TianoCore 于 10 月 22 日发布安全公告 GHSA-99cj-7hg9-mp4m,披露 EDK II 网络启动驱动存在一个可远程触发的越界写漏洞,编号 CVE-2026-97631,CVSS 4.0 评分 9.5。攻击者不需要任何凭据,只要在目标机器 PXE 网络启动的那段时间内投递一个超长的 ICMP 错误报文,就能在操作系统加载之前、在 Secure Boot 与度量启动校验任何 OS 组件之前,于 DXE 阶段拿到 ring 0 执行权限。EDK II 是 UEFI 规范的开源参考实现,AMI、Insyde、Phoenix 的固件以及微软加固版 Project Mu 都建立在这套代码之上。
漏洞位置与触发条件
问题出在 NetworkPkg/UefiPxeBcDxe,也就是 PXE Base Code 驱动。这个驱动负责让服务器、存储设备从局域网下载代码并启动。整个网络启动过程中,它会保持一个针对 ICMP 错误报文的接收请求,把每一条收到的报文拷贝进私有上下文结构里一个固定 504 字节的字段 Mode.IcmpError。
拷贝循环的边界处理在 IPv4 与 IPv6 两个处理函数里都是错的——PxeBcIcmpErrorDpcHandle 与 PxeBcIcmp6ErrorDpcHandle。报文长度超过 504 字节时,驱动照样往里写;而且目标指针按累计长度前移,不是按单个分片长度前移。结果是超长报文把攻击者可控的字节写到该字段之外。接收路径上没有任何前置环节限制报文长度。
公告把触发条件写得很直接:未认证、开机前、经网络。攻击者只需要投递一条发往客户端 IP 的单播 ICMP 错误报文,从任意网络距离都可以,暴露窗口就是 PXE 启动的持续时间。
两种利用后果
第一种是拒绝服务。驱动私有数据被确定性破坏后,DXE core 在下一条 ICMP 错误报文进来时抛出 CPU 异常,启动挂死,系统供应与恢复流程随之中断。这一档不需要知道目标固件版本。
第二种才是真正危险的部分。攻击者如果知道目标固件的具体构建版本,可以在同一个报文里伪造一个事件对象,让 CoreSignalEvent() 在 DXE 阶段派发攻击者提供的字节。此时操作系统还没加载,Secure Boot 没验证过任何 OS 组件,度量启动也没记录过东西,整条信任链的起点被直接绕开。
Dragos 首席研究官 HD Moore 对媒体表示,这个漏洞可以用来破解磁盘加密,前提是攻击者能短暂接触网络,在设备失窃场景下更容易。Eclypsium 首席研究员 Jesse Michael 的判断相对缓和:它可以用一段基础代码修掉,不需要吊销安全密钥。
影响评估
这是一个存在了大约十六年的缓冲区溢出,按 CVSS 4.0 记 9.5 分,弱点归类为 CWE-120 经典缓冲区溢出与 CWE-787 越界写。公告元数据里没有任何一个稳定版被标记为已修复,受影响范围写的是 2026 年 9 月 14 日的主线代码。
截至目前没有确认的在野利用,也不在 CISA 的已知被利用漏洞目录里,EPSS 三十天评分 0.5%。但覆盖面不能按没被打来估:Red Hat、SUSE、Debian 都把自家 EDK II 软件包列为受影响且未修复,Debian 安全跟踪页显示 OVMF 中招、各发行版均无补丁。Red Hat 与 SUSE 把可利用性评为相邻网络。英特尔称其支持的产品没有直接受影响,Arm 表示不直接适用,但设备厂商可以自行引入这段代码。
还有一个更现实的风险:这个漏洞本该在 2027 年 1 月才公开。9 月,AMI 一位工程师签核的公开代码变更直接写上了 CVE 编号并附带了修复,细节就此提前曝光。攻击者现在可以拿着修复 diff 反过来写利用。
修复与缓解建议
源码层面的修复是 GitHub 上的 PR #13302,已于 10 月 15 日合入 EDK II 主线。但修复要通过固件厂商、再到整机厂商,最后以 BIOS/UEFI 更新形式落到具体机器上,这条链通常按月计算。
- 固件厂商与自行编译 EDK II 的团队立即把 #13302 合并进自己的代码树。
- 在不可信网络上关闭 PXE 网络启动,把装机与恢复用的网络启动隔离到独立的配置 VLAN。
- 检查启动顺序。只要 PXE 排在本地磁盘之前,或者作为回退项保留,每次重启都会重新出现暴露窗口。
- 虚拟化侧进度更快:微软 Project Mu 已于 10 月 26 日发布含修复的构建,NixOS 已集成补丁,Red Hat 表示正在修。
- 对固件版本与启动配置的异常变更做审计。TPM 与 Secure Boot 仍然有用,但拦不住这一类攻击。