天下漏洞,尽知其名
HIGH 重点关注

CVE-2026-98381 Linux 内核 veth XDP 释放后使用漏洞

影响攻击者可触发内核崩溃或潜在代码执行

AI 研判

Linux 内核 veth 驱动在调整通道数(channel resize)时未清理已移除 RX 队列的 rq->xdp_prog 指针。当 XDP 程序被分离或替换后,这些队列仍保留旧指针,而 bpf_prog_put() 已释放该程序。后续增加通道数会重新启用 NAPI 并运行已释放的 XDP 程序,导致释放后使用(UAF)。

影响范围

Linux kernel veth

受影响范围为存在该缺陷的 Linux 内核版本,具体版本范围暂无公开信息,需参考上游修复提交确认。

漏洞详情

漏洞类型为释放后使用(Use-After-Free)。成因是 veth_set_channels() 在拆除被移除 RX 队列的 XDP 资源时未将 rq->xdp_prog 置空,导致旧程序指针残留。当 XDP 程序被 detach/replace 后,bpf_prog_put() 释放该程序,但残留指针仍被引用;之后通道数增加会重新启用 NAPI 并调用 veth_xdp_rcv_skb,访问已释放内存,触发内核页错误与 panic。

利用条件与风险

利用前提是攻击者能够操作 veth 设备的通道数并控制 XDP 程序的挂载/替换,通常需要具备相应网络管理权限。实战中可导致内核崩溃(拒绝服务),在特定条件下存在进一步利用的可能。

修复建议

官方修复方案为在 veth_set_channels() 拆除 RX 队列时正确清理 rq->xdp_prog 指针,建议升级到包含该修复的内核版本。临时缓解措施暂无公开信息。

原始情报

In the Linux kernel, the following vulnerability has been resolved:

veth: manage XDP program pointers during channel resize

veth_set_channels() tears down XDP resources for removed RX queues
without clearing rq->xdp_prog. If the program is then detached or
replaced, those queues keep the old pointer after bpf_prog_put().
A later channel increase can re-enable NAPI and run the freed program.

BUG: unable to handle page fault for address: ffffc90000256048
Oops: Oops: 0000 [#1] SMP KASAN NOPTI
RIP: veth_xdp_rcv_skb (include/linux/filter.h:779
include/net/xdp.h:696 drivers/net/veth.c:820)
Call Trace:
veth_xdp_rcv (drivers/net/veth.c:941)
veth_poll (drivers/net/veth.c:986)
__napi_poll (net/core/dev.c:7787)
net_rx_action (net/core/dev.c:7850 net/core/dev.c:8007)
handle_softirqs (kernel/softirq.c:645)
Kernel panic – not syncing: Fatal exception in interrupt