net: iptunnel: fix stale transport header during tunnel decapsulation
Assessment
- Severity
- Moderate
- CVSS base score
- 5.9CVSS:3.1/
AV:N/ AC:H/ PR:N/ UI:N/ S:U/ C:N/ I:N/ A:H - Impact
- Not stated
- EPSS, next 30 days
- Not scored yet
- Public exploit code
- No Nuclei template lists it
- Exploitability
- Not assessed
- Publicly disclosed
- No
- Customer action
- Required: apply the update
- Component
- Mariner
- Weakness
- —
- Issued by
- Linux
- Published
- 16 Oct 2026 · October 2026
- Last revised
- 21 Oct 2026Information published.
- Attack vector
- NetworkAV:N
- Attack complexity
- HighAC:H
- Privileges required
- NonePR:N
- User interaction
- NoneUI:N
- Scope
- UnchangedS:U
- Confidentiality
- NoneC:N
- Integrity
- NoneI:N
- Availability
- HighA:H
Updates that fix it
0 KBsNo KB listed
MSRC lists no downloadable update, which usually means a service-side fix or a release-notes update. Check the MSRC advisory.
Affected products
1 affected product
- azl3 kernel 6.6.157.1-1 on Azure Linux 3.0
What changed
First observed 16 Oct 2026- 23 Oct 2026 · 09:33:49 UTC Public exploit codeUnknown: exploit-code evidence is incomplete or retained → No Nuclei template listed
- 23 Oct 2026 · 09:33:49 UTC CISA KEVUnknown: catalog evidence is incomplete or retained → Not listed in the collected catalog
- 23 Oct 2026 · 09:33:49 UTC Source coverage: public-exploit-codeIncomplete → Current
- 23 Oct 2026 · 09:33:49 UTC Source coverage: first-epssIncomplete → Current
- 23 Oct 2026 · 09:33:49 UTC Source coverage: cisa-kevIncomplete → Current
- 23 Oct 2026 · 09:33:49 UTC Source coverage: msrc-cvrfIncomplete → Current
- 23 Oct 2026 · 08:31:50 UTC Public exploit codeNo Nuclei template listed → Unknown: exploit-code evidence is incomplete or retained
- 23 Oct 2026 · 08:31:50 UTC CISA KEVNot listed in the collected catalog → Unknown: catalog evidence is incomplete or retained
- 23 Oct 2026 · 08:31:50 UTC Source coverage: public-exploit-codeCurrent → Incomplete
- 23 Oct 2026 · 08:31:50 UTC Source coverage: first-epssCurrent → Incomplete
- 23 Oct 2026 · 08:31:50 UTC Source coverage: cisa-kevCurrent → Incomplete
- 23 Oct 2026 · 08:31:50 UTC Source coverage: msrc-cvrfCurrent → Incomplete
Show 2 more recent changes
- 21 Oct 2026 · 20:45:25 UTCLast revised 16 Oct 2026 01:04 UTC → 21 Oct 2026 18:42 UTC
- 18 Oct 2026 · 14:54:30 UTCLink: October 2026 → /security?release=2026-Oct#cves
The most recent 100 field changes are listed. Complete recorded revisions are kept separately.
Cite this recorded revision to keep the same title, summary, facts and links when the page changes.
A day selects the latest observation by the end of that UTC day; today's selection can change until midnight. History starts when this installation records it.
Explore global source statements, affected packages and advisory history for CVE-2026-98401. The catalog has a separate collection scope from Microsoft release records.
Collected exploitation and prediction evidence
Risk source coverageCISA KEV is observed exploitation evidence. FIRST EPSS is a dated prediction of exploitation in the next 30 days. Missing scores are unknown. This collector requests predictions only for explicit CVE aliases in the public NuGet archive; Microsoft release views retain their existing prediction scope.
No collected risk observation for these identifiers. This does not establish absence of exploitation or a zero probability.
cve-program · CVE-2026-98401
Publishednet: iptunnel: fix stale transport header during tunnel decapsulation
In the Linux kernel, the following vulnerability has been resolved: net: iptunnel: fix stale transport header during tunnel decapsulation Syzbot reported a crash in qdisc_pkt_len_segs_init() caused by a stale transport_header offset after tunnel decapsulation. BUG: unable to handle page fault for address: ffffed102091a42e Oops: Oops: 0000 [#1] SMP KASAN NOPTI CPU: 0 UID: 0 PID: 340 Comm: qdisc_uaf_repro Not tainted 7.2.0-rc4-00061-g248951ddc14d #256 PREEMPT(full) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:__asan_load2 <IRQ> qdisc_pkt_len_segs_init (net/core/dev.c:4145) __dev_queue_xmit (net/core/dev.c:4787) br_dev_queue_push_xmit (net/bridge/br_forward.c:53) br_handle_frame_finish (net/bridge/br_input.c:229) br_handle_frame (net/bridge/br_input.c:315) __netif_receive_skb_core.constprop.0 (net/core/dev.c:6099) __netif_receive_skb_list_core (net/core/dev.c:6287) netif_receive_skb_list_internal (net/core/dev.c:6445) napi_complete_done (net/core/dev.c:6813) gro_cell_poll (net/core/gro_cells.c:74) __napi_poll (net/core/dev.c:7735) net_rx_action (net/core/dev.c:7798 net/core/dev.c:7955) handle_softirqs (kernel/softirq.c:622) do_softirq (kernel/softirq.c:523 kernel/softirq.c:510 ) __local_bh_enable_ip (kernel/softirq.c:450) tun_get_user (drivers/net/tun.c:1986 (discriminator 1)) tun_chr_write_iter (drivers/net/tun.c:2032) The issue is completely latent until qdisc read transport header in commit 7fb4c1967011 ("net: pull headers in qdisc_pkt_len_segs_init()"). The crash requires four conditions to line up: 1. The incoming packet is encapsulated and carries GSO metadata. The outer transport header offset is stored in skb->transport_header while the packet is still in the outer tunnel context. 2. The tunnel receiver strips the outer headers. skb->data is advanced to the inner frame, but skb->transport_header is left pointing to the now-removed outer L4 header, so it becomes a negative offset relative to the new data. 3. The inner frame is not delivered to the local IP stack. Instead, it is forwarded at L2 by a bridge or HSR, so ip_rcv_core() never runs and the transport header is not reset to the inner L4 offset. 4. The forwarding path calls __dev_queue_xmit(), which enters qdisc_pkt_len_segs_init(). That function computes the GSO header length from skb_transport_offset(skb). Because the offset is negative, the unsigned cast overflows and pskb_may_pull(skb, hdr_len + sizeof(struct tcphdr)) reads past the end of the skb, triggering a KASAN fault or page fault. The issue specifically requires GSO packets (shinfo->gso_size != 0), which are processed/aggregated through gro_cells. Fix this by clearing transport_header to the ~0U sentinel in gro_cell for all tunnnel driver. GTP does not support GRO/GSO, drop the evil GSO packets in GTP directly.
- Source published
- 14 Oct 2026 13:26:01 UTC
- Source modified
- 24 Oct 2026 14:08:43 UTC
- Observed here
- 24 Oct 2026 16:17:04 UTC
- Source terms
- CVE Program Terms of Use
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: cve-program · CVE Program Terms of Use. Source text is retained; field grouping and change labels are provided by ChangeIntel.
CVSS 3.1 · 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H