CVE-2023-53600CVE-2023-53600是Linux内核隧道子系统中的一个高危安全漏洞,CVSS评分为7.1。该漏洞存在于处理IPv4路径MTU发现(PMTU)错误响应的代码路径中,具体位于iptunnel_pmtud_build_icmp函数中。当系统尝试为非线性(nonlinear)套接字缓冲区(skb)生成ICMP错误消息时,会调用ip_compute_csum函数计算校验和,但由于该函数无法正确处理非线性skb数据结构,导致触发KASAN(Kernel Address Sanitizer)检测到的slab-out-of-bounds越界读取错误。
该漏洞的影响范围涵盖Linux内核的隧道功能模块,包括VXLAN等主流隧道协议。在实际触发场景中,使用iperf3等网络性能测试工具进行高吞吐量数据传输时,VXLAN封装路径会调用skb_tunnel_check_pmtu函数检查PMTU,当数据包超过MTU限制时尝试发送ICMP错误响应,此时就会触发该漏洞。漏洞可能导致内核崩溃(kernel panic)、系统不稳定,以及潜在的敏感内核内存信息泄露。由于该漏洞需要本地低权限访问即可触发,对多用户系统和共享环境构成较大威胁。
该漏洞已于2025年10月4日披露,修复补丁已合并到多个Linux内核稳定版本分支中。
从技术层面分析,该漏洞的根本原因在于ip_compute_csum函数的设计假设与非线性skb的数据布局不兼容。在Linux内核网络栈中,skb(socket buffer)可以以两种形式存在:线性(linear)和非线性(nonlinear)。线性skb的数据存储在连续的内存区域中,可以直接通过指针偏移访问;而非线性skb的数据分散存储在多个页片段(page fragments)中,需要通过skb_frag_address等辅助函数来访问。
ip_compute_csum函数直接对skb的数据指针进行操作,假设数据是线性布局的。当传入非线性skb时,函数会错误地读取页片段边界之外的内存,从而触发KASAN的越界读取检测。具体的调用链为:vxlan_xmit_one → skb_tunnel_check_pmtu → iptunnel_pmtud_build_icmp → ip_compute_csum。
漏洞的触发条件包括:1)系统使用VXLAN或其他隧道协议;2)通过隧道传输的数据包超过MTU限制;3)内核尝试生成ICMP PMTU错误响应。修复方案是在调用ip_compute_csum之前检查skb是否为线性布局,或者使用skb_checksum等能够正确处理非线性skb的替代函数。该漏洞的利用需要本地访问权限(AV:L),低权限用户即可触发(PR:L),无需用户交互(UI:N),攻击成功后可导致高机密性影响(C:H)和高可用性影响(A:H),但不影响完整性(I:N)。