ZeroHour

CVE-2026-80753

niche

Race-condition use-after-free in Linux kernel ovpn (OpenVPN offload) module

CVSS 3.1
8.4 high
EPSS
<1%p3
Published
()
Modified
AI analysis

The Linux kernel's ovpn module (the OpenVPN data-channel offload driver) queued deferred work items whose callbacks execute module code on global system workqueues, so during module unload there was no guarantee those callbacks had finished before the kernel freed the module's text — a race that amounts to executing freed module code (a use-after-unload/use-after-free condition). It is triggered locally when the module exits while ovpn work is still in flight, for example when a worker drops the last object reference and thereby unblocks device teardown while it is still running ovpn code. An attacker with local access who can time VPN tunnel teardown against a module load/unload could trigger kernel memory corruption with high impact to confidentiality, integrity and availability (CVSS 8.4), typically a kernel crash or oops and potentially exploitable for privilege escalation. Only systems whose kernels build the ovpn driver and actually load it — i.e., deployments using the new kernel-side OpenVPN offload — are affected, and the driver's per-device keepalive timer work is separately synchronized during network-device teardown. There are no known public exploits, proofs of concept, or reports of in-the-wild exploitation, and the 30-day exploitation probability is very low (EPSS ~0.1%).

What to do: Update to a kernel that includes the ovpn fix, which moves all ovpn work to a module-owned workqueue flushed during module exit; check your distribution's security advisories for backported packages. As an interim mitigation, avoid unloading or reloading the ovpn module while VPN tunnels are active. Determine exposure by checking whether the ovpn module is loaded on your systems — if it is not loaded, you are not affected.

Affected
Linux kernel — ovpn module (OpenVPN data-channel offload driver)
Estimated exposure
nichelikely well under 10,000 systems (estimate; the ovpn driver is newly added, not loaded by default, and no public exposure scan data exists) — Estimated from the fact that ovpn is a very recently added, opt-in kernel module that must be explicitly loaded, so only early-adopter VPN servers and clients running very recent kernels that use the kernel-side OpenVPN offload are…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: ovpn: run deferred work on a module-owned workqueue ovpn queues several work items whose callbacks execute module text. These works currently run on the global system workqueues, so module exit has no driver-owned drain point that guarantees the callbacks have fully returned before the module text can be freed. Object references protect the objects used by the callbacks, but they do not prove that a workqueue function has returned. In particular, a worker can drop the final reference that unblocks device teardown while it is still executing ovpn code. Add a module-owned workqueue and queue all ovpn work items on it. During module exit, unregister rtnl and netlink first, flush the workqueue so ordinary ovpn workers finish, run the final RCU barrier, and destroy the workqueue last. This keeps the workqueue available for cleanup work queued from RCU callbacks, while ensuring no ovpn work item can outlive the module text. The per-device delayed keepalive work remains explicitly disabled during netdev teardown (disable_delayed_work_sync in ndo_uninit), since flush_workqueue does not flush delayed work that is still only pending on its timer.

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

In the news

No ingested article mentions this CVE yet.