KernelScan.io

HIGH

openvswitch MPLS Overflow

CVE-2026-31679

CVSS 7.1 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H

KernelScan AI6.1MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: openvswitch: validate MPLS set/set_masked payload length validate_set() accepted OVS_KEY_ATTR_MPLS as variable-sized payload for SET/SET_MASKED actions. In action handling, OVS expects fixed-size MPLS key data (struct ovs_key_mpls). Use the already normalized key_len (masked case included) and reject non-matching MPLS action key sizes. Reject invalid MPLS action payload lengths early.

02

Engine v0.2.0

Risk summary

OpenVSwitch fails to validate MPLS action payload lengths, allowing local attackers with CAP_NET_ADMIN (obtainable via unprivileged user namespaces) to trigger an out-of-bounds read. This can lead to information disclosure or kernel panic on systems using OpenVSwitch for network virtualization.

Affectednet/openvswitch/flow_netlink.c (OpenVSwitch)

Vulnerability analysis

The validate_set() function accepted variable-sized MPLS key payloads without length validation, while action handling code expected fixed-size struct ovs_key_mpls data. This size mismatch causes an out-of-bounds read when processing malformed MPLS SET/SET_MASKED actions, potentially leaking kernel heap data or causing a page fault. The fix adds early length validation to reject non-matching payload sizes. Attack requires CAP_NET_ADMIN privileges, which are obtainable by unprivileged users via user namespaces on default kernels.

03

BranchFixed inPatch commit
5.105.10.25368f32ef0683c
5.155.15.2034cae986225f8
6.16.1.1688ed7b9930cbc
6.126.12.8098de18d327ef
6.186.18.21bd50c7484c3b
6.196.19.112ca33b88a79c
6.66.6.131c1f97152df8d
mainline7.0546b68ac8935