CVE-2026-23111
netfilter: nf_tables: 修复 nft_map_catchall_activate() 中反向的 genmask 检查
- 已发布
- 2026年2月13日
- 已更新
- 2026年9月8日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年8月8日
初级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 天
- 百分位
- 41.0%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,以下漏洞已得到解决:netfilter: nf_tables: 修复 nft_map_catchall_activate() 中反转的 genmask 检查 nft_map_catchall_activate() 与其非 catchall 对应函数 nft_mapelem_activate() 以及逻辑上应有的要求相比,其元素活动检查是反转的。nft_map_catchall_activate() 从中止路径调用,用于重新激活在失败事务期间被停用的 catchall 映射元素。它应跳过已激活的元素(它们不需要重新激活),并处理未激活的元素(它们需要被恢复)。相反,当前代码做了相反的操作:它跳过未激活的元素并处理已激活的元素。比较正确的非 catchall 激活回调:nft_mapelem_activate(): if (nft_set_elem_active(ext, iter->genmask)) return 0; /* skip active, process inactive */ 而有缺陷的 catchall 版本:nft_map_catchall_activate(): if (!nft_set_elem_active(ext, genmask)) continue; /* skip inactive, process active */ 其后果是,当 DELSET 操作被中止时,nft_setelem_data_activate() 永远不会为 catchall 元素调用。对于 NFT_GOTO 判定元素,这意味着 nft_data_hold() 永远不会被调用来恢复 chain->use 引用计数。每次中止周期都会永久递减 chain->use。一旦 chain->use 达到零,DELCHAIN 成功并释放链,而 catchall 判定元素仍然引用它,从而导致释放后使用。在启用 CONFIG_USER_NS 和 CONFIG_NF_TABLES 的发行版上,非特权用户可通过用户命名空间 + nftables 利用此漏洞进行本地权限提升。通过移除取反来修复,使检查与 nft_mapelem_activate() 一致:跳过已激活的元素,处理未激活的元素。
来源
7CVE-2026-23111
- CVE-2026-23111漏洞利用
Linux 内核 nf_tables 释放后使用(CVE-2026-23111)——本地权限提升 PoC
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。