CVE-2026-43038

Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
01/05/2026
Last modified:
08/05/2026

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> ipv6: icmp: clear skb2-&gt;cb[] in ip6_err_gen_icmpv6_unreach()<br /> <br /> Sashiko AI-review observed:<br /> <br /> In ip6_err_gen_icmpv6_unreach(), the skb is an outer IPv4 ICMP error packet<br /> where its cb contains an IPv4 inet_skb_parm. When skb is cloned into skb2<br /> and passed to icmp6_send(), it uses IP6CB(skb2).<br /> <br /> IP6CB interprets the IPv4 inet_skb_parm as an inet6_skb_parm. The cipso<br /> offset in inet_skb_parm.opt directly overlaps with dsthao in inet6_skb_parm<br /> at offset 18.<br /> <br /> If an attacker sends a forged ICMPv4 error with a CIPSO IP option, dsthao<br /> would be a non-zero offset. Inside icmp6_send(), mip6_addr_swap() is called<br /> and uses ipv6_find_tlv(skb, opt-&gt;dsthao, IPV6_TLV_HAO).<br /> <br /> This would scan the inner, attacker-controlled IPv6 packet starting at that<br /> offset, potentially returning a fake TLV without checking if the remaining<br /> packet length can hold the full 18-byte struct ipv6_destopt_hao.<br /> <br /> Could mip6_addr_swap() then perform a 16-byte swap that extends past the end<br /> of the packet data into skb_shared_info?<br /> <br /> Should the cb array also be cleared in ip6_err_gen_icmpv6_unreach() and<br /> ip6ip6_err() to prevent this?<br /> <br /> This patch implements the first suggestion.<br /> <br /> I am not sure if ip6ip6_err() needs to be changed.<br /> A separate patch would be better anyway.

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 3.13 (excluding) 5.10.253 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (including) 5.15.203 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (including) 6.1.168 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (including) 6.6.134 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (including) 6.12.81 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.13 (including) 6.18.22 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19 (including) 6.19.12 (excluding)
cpe:2.3:o:linux:linux_kernel:3.13:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:3.13:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:3.13:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:3.13:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:3.13:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:3.13:rc7:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:3.13:rc8:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*