CVE-2026-68138
net/sched: 对并发的 get/put 操作序列化 qdisc_rtab_list
- 已发布
- 2026年8月10日
- 已更新
- 2026年8月23日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年8月19日
初级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 天
- 百分位
- 21.0%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,已解决以下漏洞:net/sched:针对并发的 get/put 操作序列化 qdisc_rtab_list qdisc_get_rtab() 和 qdisc_put_rtab() 会修改进程全局的单向链表 qdisc_rtab_list,以及一个无锁的普通非原子 'int refcnt'。这在过去之所以安全,是因为每个调用方历来都持有 RTNL 互斥锁,从而序列化了所有速率表查找、插入和释放操作。该不变式已不再成立。 cls_flower 设置了 TCF_PROTO_OPS_DOIT_UNLOCKED,因此 tc_new_tfilter() 对其保持 rtnl_held == false,并设置 TCA_ACT_FLAGS_NO_RTNL。该标志通过 tcf_exts_validate_ex() -> tcf_action_init() -> tcf_action_init_1() -> tcf_police_init() 传播,后者在未持有 RTNL 互斥锁的情况下调用 qdisc_get_rtab()/qdisc_put_rtab()。两个在不同 CPU 上发出的 RTM_NEWTFILTER 请求,各自添加一个带有相同速率 police 动作的 flower 过滤器,随后会在 qdisc_rtab_list 和非原子 refcnt 上发生竞争,导致 kmalloc-2k 结构体 qdisc_rate_table 发生 use-after-free / double-free。qdisc_rtab_list 是单个全局变量(非每网络命名空间),因此被破坏的对象会在整个系统中共享。 BUG: KASAN: slab-use-after-free in qdisc_put_rtab+0x12f/0x160 qdisc_put_rtab+0x12f/0x160 tcf_police_init+0xda9/0x1590 tcf_action_init_1+0x460/0x6b0 tcf_action_init+0x439/0xa40 tcf_exts_validate_ex+0x42d/0x550 fl_change+0xddd/0x7da0 tc_new_tfilter+0xaa7/0x2420 rtnetlink_rcv_msg+0x95e/0xe90 which belongs to the cache kmalloc-2k of size 2048 使用专用的自旋锁保护 qdisc_rtab_list 和引用计数。qdisc_get_rtab() 中(可睡眠的 GFP_KERNEL)分配在获取锁之前执行;如果并发插入方在此期间插入了相同的表,则新分配的表会在锁内被释放,因此不会泄漏重复项。qdisc_put_rtab() 现在会在同一把锁下递减引用计数并解除链表链接。
来源
3- CVE-2026-68138漏洞利用
针对 Linux qdisc 速率表竞态条件的概念验证本地权限提升漏洞利用程序,利用 BPF 堆整理和管道泄漏来获取 root 权限。
跟踪 CVE-2026-68138 的补丁状态,这是一个 Linux 内核 net/sched qdisc rate-table use-after-free 漏洞,包含受影响/已修复版本、上游提交以及按发行版自动更新的修复状态。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。