CVE-2026-43121
约 2 分钟阅读
- io_uring ZCRX freelist - 零拷贝接收路径的引用计数竞态,使同一缓冲区重复进入空闲列表并造成越界写
- CVE 记录公开:2026-05-06
- 上游引入版本:Linux
6.15 - 严重性:CVSS 3.1
4.7 Medium(NVD)CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
- CWE:CWE-362(共享资源访问同步不当导致竞态,NVD)
成因与利用条件
io_zcrx_put_niov_uref()将user_refs的检查和递减拆成两个操作,无法与 scrub 路径的清零操作保持原子性- scrub 与 refill 并发时,同一个 niov 可能两次进入 freelist,使
free_count超过数组容量,后续操作越界写入相邻内存- 这里的重复释放首先体现为 freelist 重复入队,不宜直接等同于两次
kfree()
- 这里的重复释放首先体现为 freelist 重复入队,不宜直接等同于两次
- 可造成内存破坏和拒绝服务;Red Hat 还指出潜在提权或代码执行风险,NVD 上述评分只计入可用性影响
- 需要本地可达的 ZCRX 零拷贝接收功能及相关并发操作,普通 io_uring 使用场景不能直接等同于可利用
- Linux
v6.18的io_register_zcrx_ifq()注册入口检查CAP_NET_ADMIN - 该权限检查针对所引用版本的注册入口;其他版本及已委派资源的权限边界需按实现核对
- Linux
- 与 CVE-2022-2602笔记CVE-2022-2602iouring UAF - iouring 与 Unix 域套接字垃圾回收之间的竞态,造成释放后使用 · UAF / Use After Free / 释放后使用 · 公开披露:2022-10-18(oss-security);CVE/NVD 记录在 2024-01-08 才公开打开:/notes/security/cve/2022-2602 的 Unix socket 垃圾回收 UAF 是不同问题
修复与缓解
| 上游分支 | Linux CNA 列出的修复版本 |
|---|---|
| 6.18 | 6.18.16 |
| 6.19 | 6.19.6 |
| 主线正式版 | 7.0 |
- 修复使用
atomic_try_cmpxchg循环,将检查与递减合并为原子操作 - 更新到包含该修复的受支持内核;
6.15–6.17等历史分支另查厂商补丁,不能仅比较主线版本 - 避免向不可信任务提供 ZCRX 资源及不必要的管理能力可减少暴露;不能替代修复,也不能据此推断既有资源不可被利用
PoC
- 以下为 Linux CNA 公告给出的竞态时序,属于原理示意;尚未确认可信的独立可运行 PoC 仓库
- 初始条件:同一 niov 的
user_refs = 1
| 步骤 | refill 路径 | scrub 路径 |
|---|---|---|
| 1 | 读取 user_refs,得到 1 | |
| 2 | 将 user_refs 原子清零,第一次将 niov 放入 freelist | |
| 3 | 依据此前读取结果递减,计数从 0 变为 -1 | |
| 4 | 再次将同一 niov 放入 freelist |
- 重复入队使空闲计数不再反映真实容量,后续 push 可能越界写入;补丁将检查与递减合并,阻止这种交错
- 表格说明根因,不代表已在某个内核构建中复现崩溃或提权;具体注册能力和资源条件见前文
参考
- CVE 官方记录:Linux CNA
- NVD CVE-2026-43121链接nvd.nist.gov/vuln/detail/CVE-2026-43121iouring ZCRX freelist - 零拷贝接收路径的引用计数竞态,使同一缓冲区重复进入空闲列表并造成越界写 · CVE 记录公开:2026-05-06 · 上游引入版本:Linux · 严重性:CVSS 3.1 (NVD) · -笔记:CVE-2026-43121
- Red Hat 安全跟踪链接access.redhat.com/security/cve/cve-2026-43121iouring ZCRX freelist - 零拷贝接收路径的引用计数竞态,使同一缓冲区重复进入空闲列表并造成越界写 · CVE 记录公开:2026-05-06 · 上游引入版本:Linux · 严重性:CVSS 3.1 (NVD) · -笔记:CVE-2026-43121
- Linux v6.18 ZCRX 注册与引用计数实现GitHub 文件torvalds/linux/io_uring/zcrx.c
关联信息
反向链接、本文链接的其他页面和外部资料。
站内链接
- CVE-2022-2602笔记 · CVE-2022-2602
iouring UAF - iouring 与 Unix 域套接字垃圾回收之间的竞态,造成释放后使用 · UAF / Use After Free / 释放后使用 · 公开披露:2022-10-18(oss-security);CVE/NVD 记录在 2024-01-08 才公开
参考资料
GitHub1 条
- torvalds/linux/io_uring/zcrx.cgithub.com/torvalds/linux/blob/v6.18/io_uring/zcrx.c
其他外链3 条
- access.redhat.com/security/cve/cve-2026-43121access.redhat.com/security/cve/cve-2026-43121
- nvd.nist.gov/vuln/detail/CVE-2026-43121nvd.nist.gov/vuln/detail/CVE-2026-43121
- www.cve.org/CVERecord?id=CVE-2026-43121www.cve.org/CVERecord?id=CVE-2026-43121