CVE-2026-43254

ovpn: tcp - fix packet extraction from stream

High · published May 6, 2026

CVSS v3.1
7.5
EPSS
1%
Percentile
48.5
In the wild
Unconfirmed
What it is

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

ovpn: tcp - fix packet extraction from stream

When processing TCP stream data in ovpn_tcp_recv, we receive large

cloned skbs from __strp_rcv that may contain multiple coalesced packets.

The current implementation has two bugs:

1. Header offset overflow: Using pskb_pull with large offsets on

coalesced skbs causes skb->data - skb->head to exceed the u16 storage

of skb->network_header. This causes skb_reset_network_header to fail

on the inner decapsulated packet, resulting in packet drops.

2. Unaligned protocol headers: Extracting packets from arbitrary

positions within the coalesced TCP stream provides no alignment

guarantees for the packet data causing performance penalties on

architectures without efficient unaligned access. Additionally,

openvpn's 2-byte length prefix on TCP packets causes the subsequent

4-byte opcode and packet ID fields to be inherently misaligned.

Fix both issues by allocating a new skb for each openvpn packet and

using skb_copy_bits to extract only the packet content into the new

buffer, skipping the 2-byte length prefix. Also, check the length before

invoking the function that performs the allocation to avoid creating an

invalid skb.

If the packet has to be forwarded to userspace the 2-byte prefix can be

pushed to the head safely, without misalignment.

As a side effect, this approach also avoids the expensive linearization

that pskb_pull triggers on cloned skbs with page fragments. In testing,

this resulted in TCP throughput improvements of up to 74%.

The record
Technical detail
CVSS v3.1
7.5 · HIGH
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00609 · 48.5th percentile
Published
2026-05-06T11:28Z
EPSS history
Timeline
  • 06 MAY 11:28Z
    ovpn: tcp - fix packet extraction from stream
    cvelistv5