netfilter: ip6t_hbh: reject oversized option lists
- 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.258, 5.15.209, 6.1.175, 6.6.142, 6.12.92, 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: no
- Technical impact: partial
Summary
In the Linux kernel, the following vulnerability has been resolved: netfilter: ip6t_hbh: reject oversized option lists struct ip6t_opts stores at most IP6T_OPTS_OPTSNR option descriptors, but hbh_mt6_check() does not reject larger optsnr values supplied from userspace. Validate optsnr in the rule setup path so only match data that fits the fixed-size opts array can be installed. This follows the existing xtables pattern of rejecting invalid user-provided counts in checkentry() and keeps the packet matching path unchanged. `struct ip6t_opts` has a fixed `opts[IP6T_OPTS_OPTSNR]` array, where `IP6T_OPTS_OPTSNR` is 16, then off-by-one array access is possible: [ 137.924693][ T8692] UBSAN: array-index-out-of-bounds in ../net/ipv6/netfilter/ip6t_hbh.c:110:29 [ 137.926167][ T8692] index 16 is out of range for type '__u16 [16]'
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 2d523ba48d4ecc46acfb6aba548292cfcce1ac02; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 588933f1a2ca5ff99274f8c9f25dc3a25d0191c3; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 784aadea7a108c9f90985683caa87fb0198c6a39; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 41ec2e242f1702e8370ddfe14d22b7a766021c3e; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in db0250470f023f159094052c0bd5ab026a88ae93; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 57b0ac5e1b46f1f0338dff392ef2092e2871b412; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 6feb43c0995ab3a9c826707eb46541a1696fe4f7; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 4322dcde6b4173c2d8e8e6118ed290794263bcc8
- Linux Linux
2.6.12
- KernelLinux
From 2.6.12 · fixed in 5.10.258; From 5.11.0 · fixed in 5.15.209; From 5.16.0 · fixed in 6.1.175; From 6.2.0 · fixed in 6.6.142; From 6.7.0 · fixed in 6.12.92; From 6.13.0 · fixed in 6.18.34; From 6.19.0 · fixed in 7.0.11
References 8
git.kernel.org
- stable/c/2d523ba48d4ecc46acfb6aba548292cfcce1ac02
- stable/c/588933f1a2ca5ff99274f8c9f25dc3a25d0191c3
- stable/c/784aadea7a108c9f90985683caa87fb0198c6a39
- stable/c/41ec2e242f1702e8370ddfe14d22b7a766021c3e
- stable/c/db0250470f023f159094052c0bd5ab026a88ae93
- stable/c/57b0ac5e1b46f1f0338dff392ef2092e2871b412
- stable/c/6feb43c0995ab3a9c826707eb46541a1696fe4f7
- stable/c/4322dcde6b4173c2d8e8e6118ed290794263bcc8