Description · from the CVE record
In the Linux kernel, the following vulnerability has been resolved:
ip6_tunnel: clear skb2->cb[] in ip6ip6_err()
ip6ip6_err() clones an outer IPv6 ICMP error skb, pulls it to the
quoted inner IPv6 packet, and then passes the clone to icmpv6_send().
The clone still carries the outer packet's inet6_skb_parm in skb->cb.
If the outer packet had a Home Address Option, IP6CB(skb2)->dsthao
remains non-zero after skb_pull(). icmpv6_send() later calls
mip6_addr_swap(), which uses that stale dsthao offset against the quoted
inner packet. A malformed inner destination-options header can then make
the HAO lookup and address swap run past the end of the quoted packet
and corrupt skb_shared_info.
Clear skb2->cb[] before pulling the quoted inner IPv6 packet so the
reply path does not reuse metadata left by the outer IPv6 stack.
Affected
ProductAffectedFixed inSource
Linuxe490d1d85cf5e191791979e5f260d32eb4f703a8 – < 44fe898df302e91c5ee5acbc71ffa74e78e6c18344fe898df302e91c5ee5acbc71ffa74e78e6c183CNA
Linuxe490d1d85cf5e191791979e5f260d32eb4f703a8 – < 0dadb0620ab65949a8bc2439dd28ea3c942fe87d0dadb0620ab65949a8bc2439dd28ea3c942fe87dCNA
Linuxe490d1d85cf5e191791979e5f260d32eb4f703a8 – < b6816536a2990c0db44a26130a03e40b441e829bb6816536a2990c0db44a26130a03e40b441e829bCNA
Linuxe490d1d85cf5e191791979e5f260d32eb4f703a8 – < 64e41736a26f37ab6215bc2e6df125df05aceb0864e41736a26f37ab6215bc2e6df125df05aceb08CNA
Linuxe490d1d85cf5e191791979e5f260d32eb4f703a8 – < 484134e1eb07d700a73b1e4bbf3fb503e299be60484134e1eb07d700a73b1e4bbf3fb503e299be60CNA
Linuxe490d1d85cf5e191791979e5f260d32eb4f703a8 – < 4eb15c465337b18f44716c499cd6ad63eee0ad544eb15c465337b18f44716c499cd6ad63eee0ad54CNA
Linuxe490d1d85cf5e191791979e5f260d32eb4f703a8 – < fbf40faa0414b753212494ad197542002e66ed9efbf40faa0414b753212494ad197542002e66ed9eCNA
Linuxe490d1d85cf5e191791979e5f260d32eb4f703a8 – < f803c086399da277b5d0ff36a107d0f162751800f803c086399da277b5d0ff36a107d0f162751800CNA
Linux2.6.22–CNA