CVE-2026-53264
net/sched: act_api: 对动作生命周期使用带延迟释放的RCU
- 已发布
- 2026年6月25日
- 已更新
- 2026年8月5日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年8月7日
初级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 天
- 百分位
- 15.6%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,以下漏洞已被修复:net/sched: act_api:在操作生命周期中使用 RCU 配合延迟释放 当 NEWTFILTER 和 DELFILTER 并发运行时,可能会产生与关联操作相关的竞态条件。让我们以 CPU0 运行 NEWTFILTER、CPU1 运行 DELFILTER 为例进行说明: 0: mutex_lock() <-- 持有 idr 锁 0: rcu_read_lock() 0: p = idr_find(idr, index) <-- 操作 p 有效(RCU 保护 IDR) 0: mutex_unlock() <-- 释放 idr 锁 1: refcount_dec_and_mutex_lock() <-- refcnt 1->0,持有互斥锁 1: idr_remove(idr, index) <-- 操作已从 IDR 中移除 1: mutex_unlock() <-- 释放互斥锁,允许我们删除该操作 1: tcf_action_cleanup(p); kfree(p) <-- 立即 kfree p,无延迟 0: refcount_inc_not_zero(&p->tcfa_refcnt) <-- 糟糕,UAF,p 指向已释放的内存 此补丁通过在 tc_action 中添加 struct rcu_head 用于延迟释放,并在删除路径中引入 call_rcu() 以延迟最终的 kfree(),从而修复了 NEWTFILTER 和 DELFILTER 之间的竞态条件。 注意:这是对提交 d7fb60b9cafb("net_sched: get rid of tcfa_rcu")的还原,同时也是现代化/简化处理,直接使用 kfree_rcu()。 让我们说明新的恢复后的代码路径: 0: rcu_read_lock() 1: refcount_dec_and_mutex_lock() <-- refcnt 1->0,持有互斥锁 1: idr_remove(idr, index) 1: mutex_unlock() 1: call_rcu(&p->tcfa_rcu, tcf_action_rcu_free) <-- 在宽限期后延迟 kfree 0: p = idr_find(idr, index) 0: refcount_inc_not_zero(&p->tcfa_refcnt) <-- 失败,refcnt 已为 0 1: rcu_read_unlock() <-- 释放,以便在宽限期后执行释放 在 CPU1 调用 idr_remove() 之后,该对象不再能通过 IDR 访问。CPU0 随后执行的 idr_find() 将返回 NULL,即使它仍持有过期的指针,立即的 kfree() 现在也被延迟到 RCU 宽限期之后,因此不会发生 UAF。
来源
2CVE-2026-53264 - 草稿
- CVEPoC
STAR Labs 团队编写的概念验证漏洞利用脚本合集,涵盖了他们自己发现或由他人发现的多个 CVE。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。