Vulnerability · CVE-2026-98955
flow_dissector: avoid u16 truncation of skb->len when computing thoff
Published Oct 23, 2026 · catalog updated Oct 29, 2026 · Linux Linux
Last checked Nov 6, 2026. A connected source was read within the last 7 days.
Check if you run it
No confirmed exploitation is on record for CVE-2026-98955. EPSS is 0.21%. Act only if a listed version of Linux Linux is installed.
Gaps on this record
- No vendor fix or required action is stored. Compare the linked advisory before you change production.
Same product and reporting
- CVE-2026-99284 · Unknown
- CVE-2026-99283 · Low
- CVE-2026-99260 · Medium
- CVE-2026-99259 · Medium
- CVE-2026-99258 · High
- Severity
- Unknown—
- Known exploitation
- Not in CISA/VulnCheck KEV
- EPSS
- 0.21%
- Remediation
- Advisory link
- Affected products
- Linux Kernel · Ubuntu:16.04:LTS linux-hwe-edge · Ubuntu:Pro:14.04:LTS linux-aws · Ubuntu:Pro:14.04:LTS linux-azure · Ubuntu:Pro:14.04:LTS linux-lts-xenial · Ubuntu:Pro:16.04:LTS linux
In the Linux kernel, the following vulnerability has been resolved: flow_dissector: avoid u16 truncation of skb->len when computing thoff __skb_flow_dissect() computes key_control->thoff using: key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen); min_t(u16, ...) casts both arguments to u16 before comparing them. Whenever skb->len (or hlen) modulo 65536 is smaller than nhoff, the truncated length wins and thoff is set to a bogus small value, even when the dissection succeeded. For example, an IPv4/TCP frame with skb->len == 65540 and nhoff == 34 gets thoff == 4, so callers such as skb_probe_transport_header() point the transport header inside the Ethernet header. Such skbs are not exotic: - At the time of commit d0c081b49137 ("flow_dissector: properly cap thoff field"), AF_PACKET with PACKET_VNET_HDR could already build GSO skbs larger than 64KB (MTU checks are skipped for GSO, and alloc_skb_with_frags() accepted up to MAX_SKB_FRAGS (17) order-0 pages on top of the linear part). - BIG TCP now makes skbs larger than 64KB common. - The following patch makes tun_get_user() dissect IFF_TAP frames before eth_type_trans() pulls the Ethernet header, so a GSO frame carrying a 65522..65535 byte L3 packet will be dissected with skb->len in [65536, 65549]. Compare as u32 instead. If the resulting offset cannot be represented in the u16 key_control->thoff, cap it to U16_MAX and report the dissection as failed rather than silently returning a wrong transport offset. thoff is still set on failure, as some callers (such as eth_get_headlen()) use it regardless of the return value.
Are you affected?
Enter the version you run. The result uses only the ranges stored on this record.
The check returns affected, not affected, or incomplete. It does not guess a version that is missing from the record.
- Linux Kernel4.15.0 → 6.6.160; 6.7.0 → 6.12.113; 6.13.0 → 6.18.57
- Ubuntu:16.04:LTS linux-hwe-edge4.8.0-28.30~16.04.1, 4.8.0-30.32~16.04.1, 4.8.0-32.34~16.04.1
- Ubuntu:Pro:14.04:LTS linux-aws4.4.0-1002.2, 4.4.0-1003.3, 4.4.0-1005.5
- Ubuntu:Pro:14.04:LTS linux-azure4.15.0-1023.24~14.04.1, 4.15.0-1030.31~14.04.1, 4.15.0-1031.32~14.04.1
- Ubuntu:Pro:14.04:LTS linux-lts-xenial4.4.0-13.29~14.04.1, 4.4.0-14.30~14.04.2, 4.4.0-15.31~14.04.1
- Ubuntu:Pro:16.04:LTS linux4.2.0-16.19, 4.2.0-17.21, 4.2.0-19.23
- Ubuntu:Pro:16.04:LTS linux-aws4.4.0-1001.10, 4.4.0-1003.12, 4.4.0-1004.13
- Ubuntu:Pro:16.04:LTS linux-aws-hwe4.15.0-1030.31~16.04.1, 4.15.0-1031.33~16.04.1, 4.15.0-1032.34~16.04.1
- Ubuntu:Pro:16.04:LTS linux-azure4.11.0-1009.9, 4.11.0-1011.11, 4.11.0-1013.13
- Ubuntu:Pro:16.04:LTS linux-gcp4.10.0-1004.4, 4.10.0-1006.6, 4.10.0-1007.7
- Ubuntu:Pro:16.04:LTS linux-hwe4.8.0-36.36~16.04.1, 4.8.0-39.42~16.04.1, 4.8.0-41.44~16.04.1
- Ubuntu:Pro:16.04:LTS linux-kvm4.4.0-1004.9, 4.4.0-1007.12, 4.4.0-1008.13
- Ubuntu:Pro:16.04:LTS linux-oracle4.15.0-1007.9~16.04.1, 4.15.0-1008.10~16.04.1, 4.15.0-1009.11~16.04.1
- vendor Linux Linuxversion unspecified
How to fix CVE-2026-98955
Upgrade
CVE-2026-98955 lists a fix boundary at 6.6.160. Compare the installed build with that boundary before you change production.
Version check
Seen in 4.15.0 → 6.6.160; 6.7.0 → 6.12.113; 6.13.0 → 6.18.57 · 15 other packages on the advisory
Advisory
Open the cve_org record and follow its fix.
Official advisories
What to do
Three questions, each answered from this record only. Confirm the vendor advisory before you patch.
Should you patch?
No confirmed exploitation is on record for CVE-2026-98955. EPSS is 0.21%. Act only if a listed version of Linux Linux is installed.
Which versions are affected?
Compare what you have installed with Kernel 4.15.0 → 6.6.160; 6.7.0 → 6.12.113; 6.13.0 → 6.18.57. Compare the installed version with the linked vendor advisory before you change production.
What should an analyst verify?
No weakness class is stored. EPSS 0.21%. There is no CISA KEV listing. No Exploit-DB or Metasploit reference is linked. Use the source links for the original advisory.
Technology hubs
Code
The project this record applies to. Exploit listings stay in References.
Timeline
Detection, updates, and resolution for this record.
Oct 23, 2026 · OpenSSF OSV / OSV Scanner
Detected
In the Linux kernel, the following vulnerability has been resolved: flow_dissector: avoid u16 truncation of skb->len when computing thoff __skb_flow_dissect() computes key_control->thoff using: key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen); min_t(u16, ...) casts both arguments to u16 before comparing them. Whenever skb->len (or hlen) modulo 65536 is smaller than nhoff, the truncate
Oct 24, 2026 · OpenSSF OSV / OSV Scanner
Fix available
Kernel fixed in 6.6.160; Kernel fixed in 6.12.113; Kernel fixed in 6.18.57; Kernel fixed in 7.2.11
Oct 24, 2026 · OpenSSF OSV / OSV Scanner
Fix available
Kernel fixed in 6.6.160; 6.7.0
Oct 24, 2026 · OpenSSF OSV / OSV Scanner
Updated
In the Linux kernel, the following vulnerability has been resolved: flow_dissector: avoid u16 truncation of skb->len when computing thoff __skb_flow_dissect() computes key_control->thoff using: key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen); min_t(u16, ...) casts both arguments to u16 before comparing them. Whenever skb->len (or hlen) modulo 65536 is smaller than nhoff, the truncate
Oct 25, 2026 · OpenSSF OSV / OSV Scanner
Updated
In the Linux kernel, the following vulnerability has been resolved: flow_dissector: avoid u16 truncation of skb->len when computing thoff __skb_flow_dissect() computes key_control->thoff using: key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen); min_t(u16, ...) casts both arguments to u16 before comparing them. Whenever skb->len (or hlen) modulo 65536 is smaller than nhoff, the truncate
Oct 29, 2026 · OpenSSF OSV / OSV Scanner
Updated
In the Linux kernel, the following vulnerability has been resolved: flow_dissector: avoid u16 truncation of skb->len when computing thoff __skb_flow_dissect() computes key_control->thoff using: key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen); min_t(u16, ...) casts both arguments to u16 before comparing them. Whenever skb->len (or hlen) modulo 65536 is smaller than nhoff, the truncate
Sources
- CVE.orgVulnerability recordCVE-2026-98955
In the Linux kernel, the following vulnerability has been resolved: flow_dissector: avoid u16 truncation of skb->len when computing thoff __skb_flow_dissect() computes key_control->thoff using: key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen); min_t(u16, ...) casts b
cve.org - FIRST EPSSExploitation probabilityCVE-2026-98955
30-day exploitation probability 0.21%
first.org - OpenSSF OSV / OSV ScannerPackage advisoryCVE-2026-98955
flow_dissector: avoid u16 truncation of skb->len when computing thoff
osv.dev - OpenSSF OSV / OSV ScannerPackage advisoryUBUNTU-CVE-2026-98955osv.dev
References
Freshness
Last verified in this catalog Nov 6, 2026. Significant claims (KEV, EPSS, CVSS, affected ranges) come from the source rows above — open the original publisher for the authoritative advisory.
- FIRST EPSSNov 6, 2026
- OpenSSF OSV / OSV ScannerOct 29, 2026
- OpenSSF OSV / OSV ScannerOct 25, 2026
- CVE.orgOct 24, 2026