从路由器到服务器:潜伏 13 年的 U-Boot 漏洞曝光,威胁数百万设备
It之家3小时前

IT之家 7 月 11 日消息,固件安全公司 Binarly 于当地时间 7 月 9 日发布了一份重磅安全报告,披露了全球最广泛使用的开源引导程序 U-Boot 中存在的六个高危漏洞。这批漏洞编号为 BRLY-2026-037 至 BRLY-2026-042,其中两个可导致任意代码执行,四个可引发拒绝服务(DoS)攻击。更令人担忧的是,易受攻击的代码自 2013 年 7 月发布的 U-Boot v2013.07 版本起便已存在,影响了超过 50 个稳定版本及无数下游厂商的分支固件,潜在影响范围极为广泛。U-Boot 作为引导程序,负责在操作系统启动前完成 CPU、内存及外设的初始化工作。其提供的“Verified Boot”安全机制本应通过加密签名确保仅有可信固件被加载,而此次曝光的漏洞恰恰出现在 FIT(Flattened Image Tree)镜像签名验证的核心代码中 —— 攻击者可在签名验证完成之前,通过构造恶意 FIT 镜像触发漏洞。其中风险最高的两个漏洞 BRLY-2026-037 和 BRLY-2026-038,均源于 U-Boot 对设备树解析库 fdt_get_name 函数返回值的未校验处理。当遇到精心制作的畸形镜像时,该函数会返回空指针和负长度值,而 U-Boot 直接使用这些值。BRLY-2026-037 在特定内存布局下可将空指针引用升级为栈缓冲区溢出;BRLY-2026-038 则利用负长度值使指针逆向移动,最终覆盖返回地址实现代码执行。Binarly 研究团队已在 QEMU ARM 仿真环境中成功验证了 BRLY-2026-038 的利用可行性。其余四个漏洞同样不容忽视。BRLY-2026-039 和 BRLY-2026-041 允许攻击者通过控制镜像尺寸或偏移字段,迫使 U-Boot 越界读取内存直至崩溃;BRLY-2026-040 在解析旧版本格式镜像时因未检查空指针而触发崩溃;BRLY-2026-042 则利用深度嵌套的镜像结构触发无界递归,耗尽栈内存 —— 每层嵌套仅需 12 字节镜像大小即可消耗至少 16 字节栈空间。攻击者若成功利用代码执行漏洞,将在操作系统及任何安全软件启动之前获得控制权,可禁用安全功能、篡改启动流程或植入极具隐蔽性的持久化固件后门。IT之家注意到,此类攻击并非必须依赖物理接触设备 —— 在服务器 BMC(IT之家注:基板管理控制器)等支持远程固件更新的系统中,已获得管理界面权限的攻击者可通过上传恶意固件镜像远程触发漏洞。受 DoS 漏洞影响的设备可能彻底无法启动,部分情况下需物理接触并重新烧录 SPI 闪存芯片方能恢复。Binarly 已依照 U-Boot 项目安全政策提交了漏洞报告,并与维护者 Simon Glass 和 Tom Rini 合作完成了所有六个补丁的开发和审查。相关修复方案已被合并至 U-Boot 主分支代码库。然而,由于 U-Boot 由各硬件厂商集成至自有固件中,补丁仍需经过厂商适配才能最终抵达终端用户设备,而且已停止固件更新的老旧设备可能永远无法获得修复。