一组编号为 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 通常由各硬件厂商集成到其自有固件中,这些补丁仍需要经过厂商的适配才能最终部署到终端用户设备。此外,那些已停止固件更新的老旧设备可能永远无法获得修复。

用户评论