← All Advisories

CVE-2026-97612

Last refreshed2026-10-03

Status: UPDATED  |  Advisory ID: CVE-2026-97612

Key Details

CVECVE-2026-97612
CVSS Score / Version7.8 (High) / CVSS v3.1
Updated2026-09-25
CVSS VectorCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS Proseattack vector is local; attack complexity is low; privileges required is low; user interaction is none; scope is unchanged; confidentiality impact is high; integrity impact is high; availability impact is high.
Affected productsLinux Linux

Affected Products, Subsystems & Sectors

VendorProductAffected VersionsPatch Status
LinuxLinux
SubsystemsGeneral OT
SectorsMultiple

What to Know

In the Linux kernel, the following vulnerability has been resolved:

net: mpls: clear inner_protocol when the last label is popped

skb_mpls_push() records the pre-encapsulation network header once, gated

on !skb->inner_protocol. skb_mpls_pop() never clears that record, so it

outlives the encapsulation it describes.

Open vSwitch can then re-push MPLS onto a packet whose

inner_network_header still points at the older, deeper offset: push a

label, pop every label, recirculate (ovs_flow_key_update() re-derives

key->eth.type and resets network_header, but leaves inner_*), then push

again. ovs_fragment() trusts the record:

skb->network_header = skb->inner_network_header;

so skb_network_offset() goes negative. The bound check is signed:

if (skb_network_offset(skb) > MAX_L2_LEN)

a negative offset passes it, and prepare_frag() widens the value:

unsigned int hlen = skb_network_offset(skb);

memcpy(&data->l2_data, skb->data, hlen);

which is a ~4GiB memcpy out of a 30-byte per-CPU buffer.

Reproduced on v7.3-rc1. RDX is the truncated length, (unsigned int)(-8):

BUG: unable to handle page fault for address: ffffe8ffffc16000

#PF: supervisor write access in kernel mode

Oops: 0002 [#1] SMP KASAN NOPTI

RIP: 0010:memcpy+0x8/0x20

RDX: 00000000fffffff8 RSI: ffff888105d732db RDI: ffffe8ffffc16000

prepare_frag+0x3df/0x4e0

ovs_fragment+0x589/0x7e0

do_output+0x4ce/0x5e0

do_execute_actions+0x55d2/0x7b30

ovs_execute_actions+0xea/0x450

Same root-cause shape as commit 975b5b067f52 ("ipv6: sr: restore network

header before routing and forwarding"): a stale network header offset

reaching a consumer that widens it. Here it originates in the MPLS

push/pop path.

Clear inner_protocol once the packet is no longer MPLS, so a later push

re-records the current header. net/sched/act_mpls.c is the only other

skb_mpls_pop() caller and gets the same fix; sch_frag.c saves and

restores inner_protocol around fragmentation in the same way OVS does. (NVD)

What to Do

Monitor Linux's web page for any future patch releases.

References

SourceReference
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-97612
CVEhttps://www.cve.org/CVERecord?id=CVE-2026-97612