漏洞预警|CVE-2026-97631 一个存在约16年的缓冲区溢出漏洞,影响绝大多数服务器,还能执行代码, cvss:9.5
原创
小白哥
小白哥
小白安全成长记
2026年10月28日 16:34
河北
去阅读
基本信息
- 漏洞名称:TianoCore EDK II(UEFI 参考实现)中的缓冲区溢出(经典 Buffer Overflow + Out-of-bounds Write + 缓冲区大小计算错误)。
- CVSS 评分:9.5(Critical,CVSS 4.0)。
- CWE:CWE-120、CWE-131、CWE-787。
- 影响组件:
NetworkPkg/UefiPxeBcDxe(PXE Base Code 驱动)。 - 影响版本:EDK II 从早期版本到
edk2-stable202608(以及 2026-09-14 时的 master)。 - 发现者:Alex Matrosov(Anthropic)、Dan Holmes-Mitra(Google)。
- 官方公告:TianoCore GHSA-99cj-7hg9-mp4m(2026年10月22日公开)。
漏洞原理
在 PXE 网络启动过程中,驱动会监听 ICMP 错误消息,并将其复制到固定大小为 504 字节 的 Mode.IcmpError 字段。
IPv4 和 IPv6 的处理函数(PxeBcIcmpErrorDpcHandle / PxeBcIcmp6ErrorDpcHandle)边界检查存在缺陷:
- 即使消息超过 504 字节,仍会继续复制。
- 目标指针按累计长度而非单分片长度推进。
攻击者可发送超长 ICMP 错误消息,造成内存损坏,进而在 DXE 阶段(操作系统加载前)实现任意代码执行。
在网络启动期间,PXE 基本代码驱动程序 (NetworkPkg/UefiPxeBcDxe) 会保持一个接收 ICMP 错误消息的请求处于打开状态,并将接收到的每条消息复制到其私有上下文结构的固定 504 字节字段 Mode.IcmpError 中。IPv4 和 IPv6 处理程序 (PxeBcIcmpErrorDpcHandle 和 PxeBcIcmp6ErrorDpcHandle) 中复制循环的边界处理存在错误:对于长度超过 504 字节的消息,它仍然会将字节复制到该字段中,并且它会按累积长度而不是按分片长度推进目标指针,因此过大的消息会将攻击者控制的字节写入该字段之外。接收路径上的任何早期步骤都没有限制消息长度。
攻击条件与影响
- 前提:目标必须正在进行 PXE/网络启动(纯本地磁盘启动不受影响)。
- 攻击方式:未认证的网络攻击者,向目标 IP 发送单播 ICMP 错误消息即可(可从任意网络位置发送)。
- 执行时机:在 Secure Boot 和 measured boot 验证操作系统组件之前,以 ring 0 权限运行。
-
后果:
-
可实现启动前任意代码执行(Pre-boot RCE)。
- 载荷本身通常不持久,但可被用来安装持久化早期启动恶意代码。
- 可能破坏磁盘加密、绕过远程证明等。
影响范围
- 不直接影响家庭用户或纯本地启动设备。
- 需要网络位置(通常是内网),不是纯远程初始入口点。
- 代码在 操作系统加载前、Secure Boot 和 TPM 相关信任链完全建立前 执行。
- 攻击载荷本身不持久(只运行一次),但可为后续安装持久化早期启动载荷打开大门(例如破坏磁盘加密、绕过远程证明等)。
-
EDK2 是业界主流 UEFI 实现(UEFI Forum 称其为“预eminent solution”),几乎所有主要独立 BIOS 厂商(AMI、Insyde、Phoenix)以及 Microsoft 的 Project Mu 都广泛使用。因此标题称其威胁“地球上大多数服务器”。
-
END -
修复与缓解
- 官方已有修复补丁(GitHub PR #13200),通过正确边界检查和偏移计算解决溢出问题。
- 建议措施:
- 联系固件/主板厂商获取更新。
- 临时禁用 PXE/网络启动功能。
- 启用 TPM、Secure Boot 等(虽不能直接防御此漏洞,但有助于整体安全)。
发现 CVE-2026-97631 漏洞的双方——Anthropic 公司的 Alex Matrosov 和 Google 公司的 Dan Holmes——安排将其保密,直到计划于 1 月份进行联合披露。主板及其他硬件制造商 AMI 上个月发布了一个 pull request,详细描述了该漏洞并包含代码修复。漏洞发现者注意到该 pull request 后,TianoCore 项目成员于上周发布了公开公告。
由于补丁代码已公开,高级黑客可以轻而易举地了解漏洞的触发方式并构建有效的攻击程序。更紧迫的是,为数千家硬件制造商和云服务提供商销售和使用的数百万台终端设备修复 UEFI 代码漏洞既繁琐又耗时。就在六天前,另一起漏洞披露失败的事件曝光,那次事件涉及PHP 编程语言中的一个关键代码执行漏洞。
Metasploit 创建者、安全公司 Dragos 的首席研究官 HD Moore 表示:“EDK2 网络协议栈 ICMP 解析器中的这个漏洞很有意思,因为它会影响信任链和更广泛的生态系统。攻击者如果意图入侵附近的终端或服务器,就可以利用这个漏洞在启动进程仍能访问敏感组件(例如终端的 TPM)时劫持程序流程。在攻击者拥有短期网络访问权限的情况下,这可以用来破解磁盘加密(在盗窃场景中则更容易)。”
CVE-2026-97631 是一个存在了 16 年的缓冲区溢出漏洞,存在于 PXE-Base 代码驱动程序 (NetworkPkg/UefiPxeBcDxe) 中。该驱动程序负责允许服务器、存储设备和其他设备使用从本地网络下载的代码启动。在此过程中(称为预执行环境启动),驱动程序使用网络监听器来监视 ICMP 错误。由于该驱动程序没有强制执行 504 字节的内存复制限制(即覆盖相邻数据),恶意内部人员或已获得本地网络底层访问权限的黑客可以发送错误消息,将超出此限制的代码附加到内存中。随后,运行在 CPU 上的 IUEFI 模块就会被损坏。这是一个典型的“启动早期信任链破坏”类漏洞,对依赖网络启动的服务器环境威胁较高,但对普通桌面设备风险很低。
- END -
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论