固件安全公司 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 字节的栈空间。
一旦攻击者成功利用代码执行漏洞,他们将在操作系统及所有安全软件启动之前获得设备控制权,能够禁用安全功能、篡改启动流程,或植入高度隐蔽的持久化固件后门。值得注意的是,此类攻击并非必须物理接触设备。在支持远程固件更新的系统中,例如服务器的 BMC(基板管理控制器),已获得管理界面权限的攻击者可以通过上传恶意的固件镜像来远程触发漏洞。受 DoS 漏洞影响的设备可能完全无法启动,在某些情况下,需要物理接触并重新烧录 SPI 闪存芯片才能恢复。
Binarly 已按照 U-Boot 项目的安全政策提交了漏洞报告,并与维护者 Simon Glass 和 Tom Rini 合作完成了所有六个补丁的开发和审查。
相关的修复方案已被合并到 U-Boot 的主分支代码库。然而,由于 U-Boot 被各硬件厂商集成到各自的固件中,这些补丁仍需经过厂商的适配才能最终推送至终端用户设备。此外,对于已经停止固件更新的老旧设备,可能永远无法获得修复。

玩家互动社区