CVE-2026-43038Linux内核在处理IPv6 ICMP错误消息时存在严重漏洞。在`ip6_err_gen_icmpv6_unreach()`函数中,克隆数据包时未清除控制块`cb[]`。攻击者可利用特制的IPv4 ICMP错误包中的CIPSO选项,导致IPv6控制块结构被错误解析,引发越界读写,可能导致系统崩溃或权限提升。
该漏洞位于`net/ipv6/icmp.c`中的`ip6_err_gen_icmpv6_unreach()`函数。当内核处理IPv4 ICMP错误包并生成IPv6不可达消息时,克隆的SKB控制块(`cb[]`)未清零。原IPv4的`inet_skb_parm`结构被误认为IPv6的`inet6_skb_parm`。由于CIPSO选项偏移量与`dsthao`字段内存重叠,攻击者可构造恶意包设置该偏移量。随后`mip6_addr_swap()`利用此伪造偏移量调用`ipv6_find_tlv()`,在受控数据包中搜索TLV,导致读取伪造指针并执行超出边界的16字节内存交换操作,覆盖`skb_shared_info`结构。