CVE-2026-43010Linux内核BPF子系统存在一个安全漏洞。在挂载kprobe_multi类型的BPF程序时,bpf_kprobe_multi_link_attach函数未能正确验证程序是否设置了sleepable(可休眠)标志。由于kprobe_multi程序运行在原子上下文中,不应调用休眠函数,但该漏洞允许此类程序被挂载。攻击者可利用此缺陷在原子上下文中调用bpf_copy_from_user等休眠辅助函数,导致内核抛出“sleeping function called from invalid context”错误,进而引发系统崩溃或拒绝服务。
该漏洞源于Linux内核BPF子系统在处理kprobe_multi链接时的逻辑缺陷。kprobe_multi程序被设计为在原子上下文或RCU(Read-Copy-Update)保护区域中运行,严格禁止调用可能引起进程休眠的内核函数。然而,bpf_kprobe_multi_link_attach()函数在实现时缺少了对程序标志位的关键校验,未能识别并拒绝标记为“sleepable”的程序。攻击者可以编写一个带有sleepable属性的BPF程序,并尝试通过kprobe_multi接口将其挂载到内核。由于验证缺失,内核接受了该挂载。当挂载的程序被触发执行时,它会在禁止休眠的原子上下文中调用如bpf_copy_from_user()之类的休眠函数。这种违规操作会破坏内核的调度机制,触发内核检查错误(BUG),导致系统恐慌或拒绝服务。此漏洞的利用需要本地低权限用户具备加载BPF程序的能力,一旦成功将严重影响系统可用性。