vmxnet3: fix BUG_ON in vmxnet3_get_hdr_len() for Geneve packets
- 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.265, 5.15.216, 6.1.183, 6.6.148, 6.12.101, 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: partial
Summary
In the Linux kernel, the following vulnerability has been resolved: vmxnet3: fix BUG_ON in vmxnet3_get_hdr_len() for Geneve packets vmxnet3_get_hdr_len() assumes gdesc->rcd.v4/v6/tcp always describe the outer header, but for a Geneve-encapsulated packet the device can set them based on the inner header instead, signalled by the VMXNET3_RCD_HDR_INNER_SHIFT bit in the completion descriptor. Since the function never skips the outer encapsulation, this mismatch triggers: • BUG_ON(hdr.ipv4->protocol != IPPROTO_TCP), because the outer protocol is UDP (Geneve), not TCP. • BUG_ON(hdr.eth->h_proto != ...), when the tunnel's outer and inner IP versions differ (e.g. outer IPv6/inner IPv4 or vice versa). Check VMXNET3_RCD_HDR_INNER_SHIFT up front and bail out, since the function cannot locate the inner header it would need to parse. Also convert the remaining BUG_ON()s in this function to return 0 defensively.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From 45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc · fixed in 2ddf51fcb6dd7d55ceef38e2e1a5ab2ab7fd47b0; From 45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc · fixed in fbab6b73cc086e32698c86e43d1b16bf17d24c36; From 45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc · fixed in 28e382646417c7e2be9c9a7079eddf627ff52b90; From 45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc · fixed in 667b6e52048eaf4dbcf1707ed87ffd44abb9cb38; From 45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc · fixed in 28cb5d8d13b4c1faf3f688f62e5df82fe7b438d8; From 45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc · fixed in 4fdb0f162ccdbe9626863b10003855703253fa29; From 45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc · fixed in b28596baf87e25a078789f1c05817c8a3bf71257; From 45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc · fixed in 34a71f5361fc3adb5b7138da78750b0d535a8252
- Linux Linux
4.2
- KernelLinux
From 4.2.0 · fixed in 5.10.265; From 5.11.0 · fixed in 5.15.216; From 5.16.0 · fixed in 6.1.183; From 6.2.0 · fixed in 6.6.148; From 6.7.0 · fixed in 6.12.101; From 6.13.0 · fixed in 6.18.42; From 6.19.0 · fixed in 7.1.6
References 8
git.kernel.org
- stable/c/2ddf51fcb6dd7d55ceef38e2e1a5ab2ab7fd47b0
- stable/c/fbab6b73cc086e32698c86e43d1b16bf17d24c36
- stable/c/28e382646417c7e2be9c9a7079eddf627ff52b90
- stable/c/667b6e52048eaf4dbcf1707ed87ffd44abb9cb38
- stable/c/28cb5d8d13b4c1faf3f688f62e5df82fe7b438d8
- stable/c/4fdb0f162ccdbe9626863b10003855703253fa29
- stable/c/b28596baf87e25a078789f1c05817c8a3bf71257
- stable/c/34a71f5361fc3adb5b7138da78750b0d535a8252