漏洞概述
在 Linux 内核中,sock_recv_errqueue 函数存在一个 hardened usercopy 相关的崩溃漏洞。当启用 CONFIG_HARDENED_USERCOPY 配置选项时,内核在通过 sock_recv_errqueue() → put_cmsg() 将 sk_buff.cb 数据复制到用户空间时,会因 skbuff_fclone_cache 缺少 usercopy 白名单区域而触发 kernel BUG(),导致系统崩溃。
漏洞详情
- CVE 编号:CVE-2026-22977
- 漏洞类型:内核内存安全漏洞(Hardened Usercopy 违规)
- CVSS 评分:暂无(NVD 尚未发布评分)
- 影响版本:受影响的 Linux 内核版本(具体需参考补丁提交记录,涉及使用 skbuff_fclone_cache 且未修复此问题的版本)
影响范围
该漏洞影响启用了 CONFIG_HARDENED_USERCOPY 的 Linux 内核系统,特别是在使用 TCP 时间戳报告并通过 recvmsg(MSG_ERRQUEUE) 读取错误队列的场景下。攻击者可通过构造特定网络流量触发内核崩溃,导致拒绝服务(DoS)。
风险分析
该漏洞可被本地或远程攻击者利用,通过触发 sock_recv_errqueue 路径中的 put_cmsg() 调用,导致内核因 hardened usercopy 检查失败而 panic。虽然目前未发现远程代码执行(RCE)能力,但可造成系统崩溃,构成拒绝服务风险,尤其在高可用性或关键基础设施环境中危害显著。
修复建议
- 升级至包含修复补丁的 Linux 内核版本。官方已在多个稳定分支中提交修复,包括 commit
005671c60fcf、2a71a1a8d0ed等(详见参考链接)。 - 若无法立即升级,可考虑临时禁用 CONFIG_HARDENED_USERCOPY(不推荐,会降低系统整体安全性)或限制非特权用户访问可能触发该路径的 socket 接口。
参考链接
- https://git.kernel.org/stable/c/005671c60fcf1dbdb8bddf12a62568fd5e4ec391
- https://git.kernel.org/stable/c/2a71a1a8d0ed718b1c7a9ac61f07e5755c47ae20
- https://git.kernel.org/stable/c/582a5e922a9652fcbb7d0165c95d5b20aa37575d
- https://git.kernel.org/stable/c/88dd6be7ebb3153b662c2cebcb06e032a92857f5
- https://git.kernel.org/stable/c/8c6901aa29626e35045130bac09b75f791acca85
- https://git.kernel.org/stable/c/c655d2167bf014d4c61b4faeca59b60ff9b9f6b1
- https://git.kernel.org/stable/c/e00b169eaac5f7cdbf710c354c8fa76d02009115
