ip6_tunnel: clear skb2->cb[] in ip4ip6_err()
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.253, 5.15.203, 6.1.168, 6.6.134, 6.12.81, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: yes
- Technical impact: total
Summary
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).
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From c4d3efafcc933fd2ffd169d7dc4f980393a13796 · fixed in ea9f65b27c8404e164848ebff1443310fd187629; From c4d3efafcc933fd2ffd169d7dc4f980393a13796 · fixed in d6621f60192fe10c047a4487be42a6f4c150707f; From c4d3efafcc933fd2ffd169d7dc4f980393a13796 · fixed in 2cc6e3b0fe0f0242d1f530a93a4924f48ab85ba5; From c4d3efafcc933fd2ffd169d7dc4f980393a13796 · fixed in a0c4ce9900a108eaf55d0f3b399cb55999647d39; From c4d3efafcc933fd2ffd169d7dc4f980393a13796 · fixed in 1063515ce15ff31065c4e7f8265f4c2fd3c54876; From c4d3efafcc933fd2ffd169d7dc4f980393a13796 · fixed in 590f622669b97eaf7b57a1de7b0a6e68c5d8b2c3; From c4d3efafcc933fd2ffd169d7dc4f980393a13796 · fixed in 4a622658f384b03560834cbe8ffcfe69a278f7c8; From c4d3efafcc933fd2ffd169d7dc4f980393a13796 · fixed in 2edfa31769a4add828a7e604b21cb82aaaa05925
- Linux Linux
2.6.22
- KernelLinux
From 2.6.22 · fixed in 5.10.253; From 5.11.0 · fixed in 5.15.203; From 5.16.0 · fixed in 6.1.168; From 6.2.0 · fixed in 6.6.134; From 6.7.0 · fixed in 6.12.81; From 6.13.0 · fixed in 6.18.22; From 6.19.0 · fixed in 6.19.12
References 8
git.kernel.org
- stable/c/ea9f65b27c8404e164848ebff1443310fd187629
- stable/c/d6621f60192fe10c047a4487be42a6f4c150707f
- stable/c/2cc6e3b0fe0f0242d1f530a93a4924f48ab85ba5
- stable/c/a0c4ce9900a108eaf55d0f3b399cb55999647d39
- stable/c/1063515ce15ff31065c4e7f8265f4c2fd3c54876
- stable/c/590f622669b97eaf7b57a1de7b0a6e68c5d8b2c3
- stable/c/4a622658f384b03560834cbe8ffcfe69a278f7c8
- stable/c/2edfa31769a4add828a7e604b21cb82aaaa05925