CVE-2026-98383 Linux 内核 bpf 释放后使用漏洞
影响攻击者可触发释放后使用,可能导致内核崩溃或权限提升
Linux 内核 BPF 子系统存在释放后使用漏洞,影响 LWT_SEG6LOCAL 类型的 BPF 程序。该程序可先通过 bpf_lwt_seg6_adjust_srh() 使缓存的 SRH 失效,再调用 bpf_skb_pull_data(),后者可能重新分配 skb->head,导致每 CPU 的 SRH 指针悬空。程序执行后的 SRH 校验会通过该悬空指针写入,造成释放后使用。
影响范围
受影响组件为 Linux 内核的 BPF 子系统,具体版本范围暂无公开信息。
漏洞详情
漏洞类型为释放后使用(Use-After-Free)。成因是 LWT_SEG6LOCAL 程序允许调用 bpf_skb_pull_data(),该辅助函数可能重新分配 skb 数据区,使先前缓存的 SRH 指针失效。随后内核在程序执行后对 SRH 进行校验时会通过悬空指针写入,触发释放后使用。
利用条件与风险
利用需要攻击者能够加载并运行 LWT_SEG6LOCAL 类型的 BPF 程序,通常需具备 CAP_BPF 或 CAP_NET_ADMIN 等权限。实战中可能导致内核崩溃或本地权限提升,风险较高。
修复建议
官方修复方案为禁止 LWT_SEG6LOCAL 程序调用 bpf_skb_pull_data(),使验证器拒绝该不安全的辅助函数组合;其他 LWT 程序类型仍可通过 lwt_out_func_proto() 使用该辅助函数。临时缓解措施暂无公开信息,建议及时更新内核至包含修复的版本。
In the Linux kernel, the following vulnerability has been resolved:
bpf: Disallow bpf_skb_pull_data() for LWT_SEG6LOCAL
An LWT_SEG6LOCAL program can invalidate its cached SRH with
bpf_lwt_seg6_adjust_srh() and then call bpf_skb_pull_data(). The latter
may reallocate skb->head, leaving the per-CPU SRH pointer dangling.
Post-program SRH validation then writes through that pointer.
Disallow bpf_skb_pull_data() for LWT_SEG6LOCAL programs so the verifier
rejects this unsafe helper combination. Other LWT program types continue
to expose the helper through lwt_out_func_proto().