CVE-2026-98432
ipv4:在 RCU 宽限期后释放 inet_opt 和 ireq_opt
- 已发布
- 2026年10月15日
- 已更新
- 2026年11月3日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年11月1日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H低 · 未来 30 天
- 百分位
- 39.6%
- 型号日期
- 2026年11月2日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,以下漏洞已被修复:ipv4:在 RCU 宽限期后释放 inet_opt 和 ireq_opt。tcp_v4_syn_recv_sock() 将 ireq->ireq_opt 的所有权转移给子套接字(newinet->inet_opt),而不进行复制。另一个 CPU 可能同时处理同一请求套接字的重传 SYN,并从 tcp_check_req() 发送 SYNACK。tcp_v4_send_synack() 和 inet_csk_route_req() 仅在 rcu_read_lock() 下读取 ireq->ireq_opt,随后 ip_build_and_send_pkt() 和 ip_options_build() 会两次读取 opt->optlen。请注意,SYNACK 定时器本身不是问题:它持有对其请求套接字的引用,并且 inet_csk_reqsk_queue_drop() 在子套接字可被释放之前调用 timer_delete_sync()。自提交 079096f103fa(“tcp/dccp: install syn_recv requests into ehash table”)以来,请求套接字的处理不再持有监听锁,因此没有任何机制能阻止子套接字在 SYNACK 仍在构建时被释放。TCP 子套接字没有 SOCK_RCU_FREE,并且 inet_sock_destruct() 使用普通的 kfree() 释放 inet_opt,导致 ip_options_build() 中出现释放后使用。请求套接字迁移(net.ipv4.tcp_migrate_req=1,或 BPF_SK_REUSEPORT_SELECT_OR_MIGRATE 程序)也存在类似问题。reqsk_timer_handler() 使用 inet_reqsk_clone() 克隆请求套接字,使得旧请求套接字及其克隆共享同一个 ireq_opt,然后 reqsk_migrate_reset() 清除旧请求套接字中的指针。当克隆被释放时,另一个持有旧请求套接字引用的 CPU 可能仍在使用这些选项(发送 SYNACK,或在 tcp_v4_syn_recv_sock() 中创建子套接字),并且 tcp_v4_reqsk_destructor() 也使用普通的 kfree()。读取方已经使用 RCU,其他替换 inet_opt 的路径(do_ip_setsockopt()、cipso_v4_sock_setattr()……)也已经使用 kfree_rcu()。在 inet_sock_destruct() 和 tcp_v4_reqsk_destructor() 中也使用 kfree_rcu()。IPv6 不受第一个问题影响,因为 tcp_v6_syn_recv_sock() 会复制选项。tcp_v6_reqsk_destructor() 在 ipv6_opt 上存在相同的迁移问题,而 ipv6_opt 仅由 CALIPSO 设置。这将在单独的补丁中处理。
来源
黑盒远程探测工具,通过差分 SYN-ACK 选项回显检测 Linux IPv4 TCP ireq_opt 释放后使用漏洞 CVE-2026-98432,并支持静态 vmlinux 验证。
针对 CVE-2026-98432 的技术公告与防御分析,该漏洞是 Linux 内核 IPv4 TCP 中的释放后使用(use-after-free)漏洞,内容涵盖受影响版本、检测命令以及补丁指引。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。