CVE-2026-43070Linux内核中的eBPF验证器存在一个安全漏洞,涉及BPF_END字节交换操作的寄存器值跟踪。当寄存器经历BPF_END操作时,其标量值发生突变,但由于验证器未能重置目标寄存器的ID,导致该寄存器与其他寄存器的关联未被切断。这使得在检查交换后的寄存器边界时,验证器错误地将边界信息传播到关联的寄存器上。攻击者可利用此逻辑缺陷,欺骗验证器通过安全检查,从而可能导致越界内存访问。
该漏洞位于Linux内核的eBPF(扩展伯克利数据包过滤器)子系统验证器中。验证器负责跟踪寄存器状态以确保程序安全。问题出在处理`BPF_END`(字节序转换)指令时。当执行类似`r1 = r0`的赋值操作后,`r1`和`r0`会共享同一个标量ID(scalar ID),用于同步值的范围信息。随后若对`r1`执行`BPF_END`,其值被修改,但验证器未将`dst_reg->id`重置为0,导致逻辑联系未断开。当程序对`r1`进行条件跳转检查时,验证器错误地将推导出的边界范围应用到`r0`上。攻击者可利用这一点,构造特定的eBPF字节码,伪造`r0`的值范围,进而绕过边界检查,实现越界内存读写,可能导致内核崩溃或权限提升。