In the Linux kernel, the following vulnerability has been resolved: ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach() Sashiko AI-review observed: In ip6_err_gen_icmpv6_unreach(), the skb is an outer IPv4 ICMP error packet where its cb contains an IPv4 inet_skb_parm. When skb is cloned into skb2 and passed to icmp6_send(), it uses IP6CB(skb2). IP6CB interprets the IPv4 inet_skb_parm as an inet6_skb_parm. The cipso offset in inet_skb_parm.opt directly overlaps with dsthao in inet6_skb_parm at offset 18. If an attacker sends a forged ICMPv4 error with a CIPSO IP option, dsthao would be a non-zero offset. Inside icmp6_send(), mip6_addr_swap() is called and uses ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO). This would scan the inner, attacker-controlled IPv6 packet starting at that offset, potentially returning a fake TLV without checking if the remaining packet length can hold the full 18-byte struct ipv6_destopt_hao. Could mip6_addr_swap() then perform a 16-byte swap that extends past the end of the packet data into skb_shared_info? Should the cb array also be cleared in ip6_err_gen_icmpv6_unreach() and ip6ip6_err() to prevent this? This patch implements the first suggestion. I am not sure if ip6ip6_err() needs to be changed. A separate patch would be better anyway.
When an external ICMPv4 packet is cloned to skb2 and passed to icmp6_send(), the cb[] array contains an inet_skb_parm structure (IPv4), which is incorrectly interpreted by the IP6CB macro as inet6_skb_parm (IPv6). The cipso field in the IPv4 structure overlaps with the dsthao field in the IPv6 structure at offset 18. If an attacker sends a crafted ICMPv4 packet with a CIPSO option, the mip6_addr_swap() function will call ipv6_find_tlv() with an unverified dsthao offset, scanning attacker-controlled content in the IPv6 packet. As a result, a 16-byte data swap may occur beyond the packet data boundary, potentially reaching the skb_shared_info structure.
An attacker can remotely trigger invalid memory access beyond packet buffer boundaries, which may lead to violations of confidentiality, integrity, and availability of the system, including potentially arbitrary code execution or kernel crash.
Patches available from the vendor should be applied according to references (commits: 0452b6526b2f, 1ceeebd5bd6d, 3d5127d998de, 86ab3e55673a, a2edbb6393972a in the linux-stable repository)
Linux Kernel — versions indicated in vendor references (patches available in the stable repository)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux Kernel
OSLinux3.137.05.16 – 6.1.168 (bez)6.2 – 6.6.134 (bez)< 5.10.2536.13 – 6.18.22 (bez)6.19 – 6.19.12 (bez)6.7 – 6.12.81 (bez)5.11 – 5.15.203 (bez)
Related vulnerabilities
Type confusion w V8 (Google Chrome) — zdalne uszkodzenie sterty
Commvault Command Center – nieuwierzytelniony RCE przez path traversal w ZIP
IBM Aspera Faspex 4.4.2 Patch Level 1 and earlier could allow a remote attacker to execute arbitrary code on t...
VMware Workspace ONE Access and Identity Manager contain a remote code execution vulnerability due to server-s...
VMware Workspace One Access, Access Connector, Identity Manager, and Identity Manager Connector address have a...