KernelScan.io

HIGH

ovpn TCP Overflow

CVE-2026-43254

CVSS 7.5 / 10.0 NVD

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

KernelScan AI4.3MEDIUM

01

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%.

02

Engine v0.2.0

Risk summary

Systems running the OpenVPN kernel driver (ovpn) with TCP transport are vulnerable to remote denial of service. An authenticated VPN peer can cause packet drops and severe TCP throughput degradation by sending TCP stream data that triggers a header offset overflow when coalesced skbs are processed. The issue does not lead to memory corruption or information disclosure.

Affecteddrivers/net/ovpn/tcp.c (OpenVPN kernel driver)

Vulnerability analysis

The vulnerability exists in the ovpn TCP receive path (ovpn_tcp_rcv). When the driver processes large cloned skbs from the stream parser (strparser) containing multiple coalesced packets, using pskb_pull with large offsets causes skb->data - skb->head to exceed the storable range of skb->network_header. This results in skb_reset_network_header failing and subsequent packet drops. The root cause is an integer overflow/truncation issue in offset handling during TCP stream decapsulation. The fix allocates a new skb per OpenVPN packet and copies only the packet contents, avoiding both the overflow and unaligned access issues. Because the bug is triggered by network input to the VPN's TCP socket, the attack vector is Network.

03

BranchFixed inPatch commit
6.186.18.160315bec883c6
6.196.19.67dba6cd7fb16
mainline7.0d4f687fbbce4