CVE-2026-31413Linux内核BPF验证器中存在一处逻辑缺陷,导致`maybe_fork_scalars()`函数在处理`BPF_OR`指令时出现状态分叉错误。当目标寄存器取值范围为[-1, 0]且源操作数为常数时,验证器错误地假设运算结果为0。这种验证器与运行时的状态不一致,允许本地攻击者绕过边界检查,执行越界映射访问,进而可能导致权限提升。
该漏洞发生在Linux内核的BPF验证器组件中,具体涉及标量追踪和状态分叉逻辑。当验证器分析BPF指令时,如果遇到目标寄存器被约束在[-1, 0]的范围内,并且执行的是`BPF_OR`操作,它会错误地处理常数传播。验证器假设`0 | K`的结果是0(类似于`BPF_AND`的行为),但实际上运行时结果为K。这种逻辑漏洞导致验证器认为访问是安全的,而实际执行时发生了越界。攻击者可以构造恶意的eBPF程序,利用这一点触发越界读写,从而破坏内核内存或读取敏感数据。