CVE-2022-2602
约 3 分钟阅读
- io_uring UAF - io_uring 与 Unix 域套接字垃圾回收之间的竞态,造成释放后使用
- UAF / Use After Free / 释放后使用
- 公开披露:2022-10-18(oss-security);CVE/NVD 记录在 2024-01-08 才公开
- 本地攻击者可导致内核崩溃或利用内存破坏提升权限
- 严重性存在不同评估
- NVD:CVSS 3.1
7.0 High,AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H - Canonical CNA:CVSS 3.1
5.3 Medium,AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:H
- NVD:CVSS 3.1
- CWE:CWE-416(释放后使用)
成因与利用条件
- io_uring 注册的文件仍被异步请求使用时,Unix 域套接字的垃圾回收可能先释放 io_uring 文件描述符及其关联的注册文件
- 回收顺序使注册文件在 io_uring 完成注销并等待请求结束之前被释放,后续请求继续访问已释放对象
- 需要本地执行能力,能够访问 io_uring 及相关 Unix socket 路径,并安排请求与回收之间的竞态
userfaultfd是原始公告提及的一种控制等待时机的方法;还有类似策略,单独限制它不能等同于修复漏洞
影响范围与修复
- 原始公告确认上游
5.4.y、5.15.y及后续相关版本受影响 5.10.y的其他修改可能缓解某些路径,但公告仍建议应用修复- 主线修复进入
6.1-rc1:0091bfc81741io_uring/af_unix: defer registered files gc to io_uring release- 将注册文件的回收推迟到 io_uring 释放阶段,保证使用中的请求先结束
- 旧稳定分支与发行版另有回补,不能用「所有低于 6.1 的内核」统一判断
- Debian 11 bullseye 的
linux源码包修复版本为5.10.149-1 - 这是 Debian 包版本,不是所有发行版通用的上游修复下限
- Debian 11 bullseye 的
- 安装对应发行版的安全更新,确认实际运行的内核已包含补丁
- 如业务不使用 io_uring,可通过运行环境支持的系统调用过滤限制其访问;缓解效果取决于覆盖的进程范围,不能替代内核更新
PoC
LukeGix/CVE-2022-2602提供 userfaultfd 与 inode locking 两种利用实现- 两种实现都围绕「请求仍在使用文件时,垃圾回收已释放该文件」安排时序;使用哪种等待手段会影响环境要求
- 原理示意:
请求路径:注册文件 F -> 提交异步请求 -> 请求等待
回收路径:Unix socket GC -> 提前释放 F
请求路径:继续处理 -> 访问已经释放的 F- 复现关注异步请求与回收之间的生命周期错误;一次崩溃不等同于已经证明提权
- 仓库提供的是利用程序,内存破坏和提权行为需要结合具体实现检查,不能作为无副作用的版本检测器
参考
- 原始公告:CVE-2022-2602 - Linux kernel io_uring UAF
- Ubuntu 安全跟踪链接ubuntu.com/security/CVE-2022-2602iouring UAF - iouring 与 Unix 域套接字垃圾回收之间的竞态,造成释放后使用 · UAF / Use After Free / 释放后使用 · 公开披露:2022-10-18(oss-security);CVE/NVD 记录在 2024-01-08 才公开笔记:CVE-2022-2602
- Debian 安全跟踪链接security-tracker.debian.org/tracker/CVE-2022-2602iouring UAF - iouring 与 Unix 域套接字垃圾回收之间的竞态,造成释放后使用 · UAF / Use After Free / 释放后使用 · 公开披露:2022-10-18(oss-security);CVE/NVD 记录在 2024-01-08 才公开笔记:CVE-2022-2602
- NVD CVE-2022-2602链接nvd.nist.gov/vuln/detail/CVE-2022-2602iouring UAF - iouring 与 Unix 域套接字垃圾回收之间的竞态,造成释放后使用 · UAF / Use After Free / 释放后使用 · 公开披露:2022-10-18(oss-security);CVE/NVD 记录在 2024-01-08 才公开笔记:CVE-2022-2602
- CVE 官方记录
- Linux 上游修复
0091bfc81741 - LukeGix/CVE-2022-2602GitHubLukeGix/CVE-2022-2602iouring UAF - iouring 与 Unix 域套接字垃圾回收之间的竞态,造成释放后使用 · UAF / Use After Free / 释放后使用 · 公开披露:2022-10-18(oss-security);CVE/NVD 记录在 2024-01-08 才公开笔记:CVE-2022-2602
- 包含 userfaultfd 与 inode locking 两种复现实现
- poc_inode_locking.cGitHub 文件LukeGix/CVE-2022-2602/poc_inode_locking.c - inode locking 路径
关联信息
反向链接、本文链接的其他页面和外部资料。
反向链接
- CVE-2026-43121笔记 · CVE-2022-2602
iouring ZCRX freelist - 零拷贝接收路径的引用计数竞态,使同一缓冲区重复进入空闲列表并造成越界写 · CVE 记录公开:2026-05-06 · 上游引入版本:Linux · 严重性:CVSS 3.1 (NVD) · -
参考资料
GitHub2 条
- LukeGix/CVE-2022-2602github.com/LukeGix/CVE-2022-2602
- LukeGix/CVE-2022-2602/poc_inode_locking.cgithub.com/LukeGix/CVE-2022-2602/blob/main/poc_inode_locking.c
其他外链6 条
- git.kernel.org/linus/0091bfc81741b8d3aeb3b7ab8636f911b2de6e80git.kernel.org/linus/0091bfc81741b8d3aeb3b7ab8636f911b2de6e80
- nvd.nist.gov/vuln/detail/CVE-2022-2602nvd.nist.gov/vuln/detail/CVE-2022-2602
- security-tracker.debian.org/tracker/CVE-2022-2602security-tracker.debian.org/tracker/CVE-2022-2602
- ubuntu.com/security/CVE-2022-2602ubuntu.com/security/CVE-2022-2602
- www.cve.org/CVERecord?id=CVE-2022-2602www.cve.org/CVERecord?id=CVE-2022-2602
- www.openwall.com/lists/oss-security/2022/10/18/4www.openwall.com/lists/oss-security/2022/10/18/4