六个新的U-Boot漏洞可让恶意镜像使设备崩溃或在启动时执行代码

六个新的U-Boot漏洞可让恶意镜像使设备崩溃或在启动时执行代码

导语:固件安全公司Binarly在U-Boot引导加载程序中发现六个新漏洞,其中两个可在启动阶段实现代码执行,严重威胁设备的整条信任链。

固件安全公司Binarly的研究人员在U-Boot中发现了六个新的漏洞。U-Boot是一个负责启动各类硬件的小程序,其应用范围涵盖家用路由器、智能摄像头,以及数据中心服务器内部的管理芯片。其中四个漏洞可导致设备崩溃,另外两个可能让攻击者将恶意镜像送至引导加载程序面前,在设备尚未确认软件真实性之前运行自己的代码。

引导加载程序在操作系统之前运行,因此这一环节的漏洞可能危及之后加载的所有内容。上述六个漏洞全部出现在U-Boot读取不可信镜像的阶段,此时它尚未完成签名校验。U-Boot可以将内核、设备树、ramdisk及其他启动组件打包成一个FIT(Flattened Image Tree,扁平化镜像树)单元,并在移交控制权之前校验该软件包的数字签名。

Binarly在该签名校验流程中寻找薄弱环节并发现了这六个漏洞。据Binarly表示,大部分受影响的代码自U-Boot v2013.07版本以来便一直存在,跨越超过50个稳定版本,同时也存在于大量基于U-Boot构建的厂商固件之中。这些漏洞被追踪为Binarly公告编号BRLY-2026-037至BRLY-2026-042,目前尚未分配CVE编号。它们分为两类:两个可导致代码执行,四个仅造成崩溃。

两个可执行代码的漏洞分别是BRLY-2026-037和BRLY-2026-038,二者都源于同一个未经检查的值。U-Boot调用fdt_get_name——这是它所借用的设备树解析库中的一个查询函数——在面对畸形镜像时,该查询会返回空指针和负长度,而U-Boot对这两者都未做校验就直接使用。其中一个漏洞会沿着空指针进入内存复制操作,在地址零被映射的设备上,这会变成栈缓冲区溢出;另一个则将负长度传入指针算术运算,导致指针不断回溯直至覆盖某个已保存的返回地址。在合适的内存布局下,这两种情况中的任意一种都可能将控制权交给攻击者提供的代码。

其余四个漏洞仅会使引导加载程序崩溃。BRLY-2026-039和BRLY-2026-041因信任攻击者可控制的尺寸或偏移量,导致读取越过镜像末尾;BRLY-2026-040对旧版镜像格式未经检查便返回的空指针进行了解引用;BRLY-2026-042则会耗尽栈空间,触发原因是深层嵌套的镜像使某个早期校验步骤不断自我递归调用,直至资源耗尽。Binarly为每个漏洞都发布了概念验证镜像和复现步骤,并在标准U-Boot构建上演示了这些漏洞,迄今尚未报告在实际攻击中被利用的案例。

原文配图

在这六个漏洞中,两个内存破坏类漏洞最值得关注:崩溃可以令设备掉线,但在启动阶段获得代码执行能力,则可能颠覆设备整条信任链。最坏情况下,一台无法启动的设备需要物理接触并重新刷写其存储芯片才能恢复;而代码执行的后果则更为严重——这种极早期运行的代码位于操作系统之下,普通安全工具未必能察觉到它的存在。

对攻击者而言,难点在于投递:这些漏洞只有在恶意镜像抵达启动路径时才会被触发,而要做到这一点通常需要物理访问或获得特权立足点。不过,该立足点并不一定局限于本地。在Binarly研究员此前针对Supermicro服务器管理控制器的研究中曾表明,拥有管理接口远程访问权限的攻击者可以滥用设备自身的更新流程来刷入恶意镜像,整个过程无需接触硬件。

目前尚无包含修复的稳定版本发布,因此基于U-Boot的产品厂商和维护者不应等待:应立即按照各条Binarly公告中的提交链接拉取上游补丁,并通过公告编号进行追踪,因为相关漏洞尚未分配CVE。U-Boot已于6月合并了这六处补丁,但7月发布的版本(v2026.07)早在4月就已经冻结,因此其在发布时并未包含这些修复;下一个版本v2026.10预计要等到10月才会发布。

对使用基于U-Boot产品的终端用户而言,修复只能以厂商固件更新的形式到来。同一签名校验逻辑此前也曾出现过问题:几个月前CVE-2026-33243攻击了相同的签名逻辑,U-Boot已在4月完成修补;使用相同镜像工具链的barebox引导加载程序也遭受了类似攻击。


来源信息

来源:The Hacker News

原文链接:https://thehackernews.com/2026/07/six-new-u-boot-flaws-could-let.html

作者:info@thehackernews.com (The Hacker News)