Description
In the Linux kernel, the following vulnerability has been resolved: ip6_tunnel: clear skb2->cb[] in ip4ip6_err() Oskar Kjos reported the following problem. ip4ip6_err() calls icmp_send() on a cloned skb whose cb[] was written by the IPv6 receive path as struct inet6_skb_parm. icmp_send() passes IPCB(skb2) to __ip_options_echo(), which interprets that cb[] region as struct inet_skb_parm (IPv4). The layouts differ: inet6_skb_parm.nhoff at offset 14 overlaps inet_skb_parm.opt.rr, producing a non-zero rr value. __ip_options_echo() then reads optlen from attacker-controlled packet data at sptr[rr+1] and copies that many bytes into dopt->__data, a fixed 40-byte stack buffer (IP_OPTIONS_DATA_FIXED_SIZE). To fix this we clear skb2->cb[], as suggested by Oskar Kjos. Also add minimal IPv4 header validation (version == 4, ihl >= 5).
Product status
c4d3efafcc933fd2ffd169d7dc4f980393a13796 (git) before ea9f65b27c8404e164848ebff1443310fd187629
c4d3efafcc933fd2ffd169d7dc4f980393a13796 (git) before d6621f60192fe10c047a4487be42a6f4c150707f
c4d3efafcc933fd2ffd169d7dc4f980393a13796 (git) before 2cc6e3b0fe0f0242d1f530a93a4924f48ab85ba5
c4d3efafcc933fd2ffd169d7dc4f980393a13796 (git) before a0c4ce9900a108eaf55d0f3b399cb55999647d39
c4d3efafcc933fd2ffd169d7dc4f980393a13796 (git) before 1063515ce15ff31065c4e7f8265f4c2fd3c54876
c4d3efafcc933fd2ffd169d7dc4f980393a13796 (git) before 590f622669b97eaf7b57a1de7b0a6e68c5d8b2c3
c4d3efafcc933fd2ffd169d7dc4f980393a13796 (git) before 4a622658f384b03560834cbe8ffcfe69a278f7c8
c4d3efafcc933fd2ffd169d7dc4f980393a13796 (git) before 2edfa31769a4add828a7e604b21cb82aaaa05925
2.6.22
Any version before 2.6.22
5.10.253 (semver)
5.15.203 (semver)
6.1.168 (semver)
6.6.134 (semver)
6.12.81 (semver)
6.18.22 (semver)
6.19.12 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/ea9f65b27c8404e164848ebff1443310fd187629
git.kernel.org/...c/d6621f60192fe10c047a4487be42a6f4c150707f
git.kernel.org/...c/2cc6e3b0fe0f0242d1f530a93a4924f48ab85ba5
git.kernel.org/...c/a0c4ce9900a108eaf55d0f3b399cb55999647d39
git.kernel.org/...c/1063515ce15ff31065c4e7f8265f4c2fd3c54876
git.kernel.org/...c/590f622669b97eaf7b57a1de7b0a6e68c5d8b2c3
git.kernel.org/...c/4a622658f384b03560834cbe8ffcfe69a278f7c8
git.kernel.org/...c/2edfa31769a4add828a7e604b21cb82aaaa05925