IPBUF安全漏洞报告
English
CVE-2026-43010 CVSS 5.5 中危

CVE-2026-43010 Linux内核BPF组件拒绝服务漏洞

披露日期: 2026-05-01
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2026-43010
漏洞类型
拒绝服务
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelBPFDoSLocalRace Condition

漏洞概述

Linux内核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程序的能力,一旦成功将严重影响系统可用性。

攻击链分析

STEP 1
步骤1
攻击者编写一个包含sleepable辅助函数(如bpf_copy_from_user)的BPF程序,并将其标记为可休眠或利用系统允许的特性。
STEP 2
步骤2
攻击者利用bpf_kprobe_multi_link_attach系统调用,尝试将该程序挂载到内核的kprobe_multi接口。
STEP 3
步骤3
由于漏洞,bpf_kprobe_multi_link_attach未正确校验程序属性,错误地允许了该休眠程序在原子上下文挂载。
STEP 4
步骤4
当系统触发相应的内核探针事件时,该BPF程序在原子上下文中被执行。
STEP 5
步骤5
程序尝试调用休眠函数,触发内核“sleeping function called from invalid context”错误,导致系统崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// SPDX-License-Identifier: GPL-2.0 /* * PoC for CVE-2026-43010 * This BPF program attempts to use a sleepable helper * within a kprobe.multi context (atomic context). * Compile with clang -target bpf */ #include <linux/bpf.h> #include <bpf/bpf_helpers.h> // Attempting to attach a sleepable-capable logic to kprobe.multi // In vulnerable kernels, the attach logic does not reject this. SEC("kprobe.multi") int malicious_kprobe(void *ctx) { char buf[64]; // bpf_copy_from_user is a sleepable helper. // Calling this in atomic context triggers the bug. // The vulnerability allows the program to be attached despite this. bpf_copy_from_user(buf, sizeof(buf), (void *)0xdeadbeef); return 0; } char _license[] SEC("license") = "GPL";

影响范围

Linux Kernel (修复前版本)

防御指南

临时缓解措施
建议限制普通用户对BPF系统的访问权限,仅允许受信任的管理员或服务加载BPF程序。在应用官方补丁前,可暂时禁用kprobe_multi功能或监控内核日志以检测潜在的异常调用。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表