CVE-2026-74586
sctp:移除对端时清除 new_transport
- 已发布
- 2026年8月22日
- 已更新
- 2026年8月25日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年9月9日
初级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 天
- 百分位
- 41.7%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,已解决以下漏洞:sctp:在移除对端时清除 new_transport sctp_process_asconf_param() 会将新添加的对端传输存储在 asoc->new_transport 中。在 ASCONF 块中的所有参数处理完毕后,sctp_sf_do_asconf() 会使用该指针向新传输发送 HEARTBEAT。来自远程 SCTP 对端的经过身份验证的 ASCONF 可以在同一块中添加一个传输,并通过通配符 DEL-IP 参数再次将其移除。通配符删除会保留 ASCONF 到达时所使用的传输,但会通过 sctp_assoc_del_nonprimary_peers() 移除新添加的传输。该移除操作不会清除 asoc->new_transport,导致其仍指向已移除的传输。随后 sctp_sf_do_asconf() 会创建一个 HEARTBEAT,其 chunk->transport 指向已移除的传输,且未持有传输引用。在本地地址替换期间,src_out_of_asoc_ok 会将该 HEARTBEAT 保留在 control_chunk_list 上。在传输被 RCU 释放后,针对替换地址的成功 ASCONF_ACK 会释放排队的 HEARTBEAT,而 sctp_outq_select_transport() 会读取已释放传输的状态。该问题是在对 SCTP 对象进行静态审计时发现的。在启用 KASAN 的 netdev/main 内核上,使用经过身份验证的对端,该复现程序在 2 次未打补丁的运行中均触发了相同的 KASAN 报告: BUG: KASAN: slab-use-after-free in sctp_outq_select_transport Read of size 4 at addr ffff88800b9bd95c by task python3/197 Call Trace: sctp_outq_select_transport+0x549/0x8b0 [sctp] sctp_outq_flush+0x306/0x2c60 [sctp] sctp_transport_immediate_rtx+0xaf/0x260 [sctp] sctp_process_asconf_ack+0xa48/0xf70 [sctp] Allocated by task 197: sctp_transport_new+0x68/0x650 [sctp] sctp_assoc_add_peer+0x258/0x12a0 [sctp] sctp_process_asconf+0x5e9/0x1090 [sctp] Last potentially related work creation: __call_rcu_common.constprop.0+0x77/0xb70 sctp_assoc_del_nonprimary_peers+0x7c/0xd0 [sctp] sctp_process_asconf+0xd9c/0x1090 [sctp] 首次无效访问是对 net/sctp/outqueue.c:833 处 transport->state 的四字节读取。应用此更改后,相同的复现程序完成了完整的经过身份验证的 ASCONF 和本地地址替换序列,未出现 KASAN 报告或 oops。当 new_transport 的对端被移除时清除该指针,防止其在创建 HEARTBEAT 时被使用。
来源
1非特权用户针对 CVE-2026-74586 的概念验证,该漏洞为 Linux 内核 SCTP ASCONF 释放后使用(use-after-free)。提供原始数据包触发、可靠性指标以及详细的武器化分析,包括结构体偏移量和堆喷原语。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。