CVE-2025-38502
bpf:修复 cgroup 本地存储中的越界访问
- 已发布
- 2025年8月16日
- 已更新
- 2026年8月5日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年9月11日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H低 · 未来 30 天
- 百分位
- 6.1%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,以下漏洞已被修复:bpf:修复 cgroup 本地存储中的越界访问。Lonial 报告称,通过尾调用可以构造出 cgroup 本地存储中的越界访问。给定两个程序各自使用具有不同值大小的 cgroup 本地存储,并且一个程序对另一个程序执行尾调用。验证器会分别验证每个单独的程序,没有问题。然而,在运行时上下文中,bpf_cg_run_ctx 持有一个 bpf_prog_array_item,其中包含 BPF 程序以及该程序使用的任何 cgroup 本地存储类型。诸如 bpf_get_local_storage() 之类的辅助函数会从运行时上下文中获取它:ctx = container_of(current->bpf_ctx, struct bpf_cg_run_ctx, run_ctx); storage = ctx->prog_item->cgroup_storage[stype]; if (stype == BPF_CGROUP_STORAGE_SHARED) ptr = &READ_ONCE(storage->buf)->data[0]; else ptr = this_cpu_ptr(storage->percpu_buf); 对于从最初附加的程序调用的第二个程序,这意味着 bpf_get_local_storage() 将获取前一个程序的 map,而不是它自己的。在大小不匹配的情况下,这可能导致意外的越界访问。为了修复此问题,我们需要扩展 bpf_map_owner,增加一个 storage_cookie[] 数组,以匹配 i) 如果第二个程序使用了 bpf_get_local_storage(),则匹配原始程序的确切 map,或者 ii) 如果第二个程序未使用任何 cgroup 本地存储 map,则允许尾调用组合。
来源
1CVE-2025-38502 研究仓库,该漏洞是 Linux 内核 BPF cgroup 本地存储通过尾调用导致的越界访问,可实现本地权限提升。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。