CVE-2026-68342: ovpn: avoid putting unrelated P2P peer on socket release

Greg Kroah-Hartman <[email protected]>
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026081037-CVE-2026-68342-4501@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

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

ovpn: avoid putting unrelated P2P peer on socket release

ovpn_peer_release_p2p() is called when an OVPN UDP socket is being
destroyed. It checks the currently published P2P peer and releases it only
if that peer still uses the socket being destroyed.

A peer replacement can publish a new peer before the old UDP socket is
destroyed. When the old socket destruction path runs afterwards,
ovpn_peer_release_p2p() observes the new peer through ovpn->peer. Since the
new peer uses a different socket, the function takes the socket mismatch
branch.

That branch still calls ovpn_peer_put(peer). At this point, however, peer
is the currently published replacement peer, not the peer associated with
the socket being destroyed. Dropping its reference can free it while
ovpn->peer still points to it, leading to later use-after-free accesses
from the peer and socket cleanup paths.

KASAN reports this as a slab-use-after-free on the kmalloc-1k ovpn_peer
object. In the reproducer, the object is allocated from ovpn_peer_new() via
ovpn_nl_peer_new_doit(), and freed through ovpn_peer_release_rcu() from RCU
callback processing. Observed access sites include ovpn_peer_remove(),
ovpn_socket_release(), ovpn_nl_peer_del_notify(), and unlock_ovpn().

Fix this by returning from the socket mismatch branch without putting the
peer.

The Linux kernel CVE team has assigned CVE-2026-68342 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 6.16 with commit f6226ae7a0cd47aaa9175aca6a1e19600f884cbf and fixed in 6.18.42 with commit c5bf6b39be235ef578af4d39872f0c68cda3b937
	Issue introduced in 6.16 with commit f6226ae7a0cd47aaa9175aca6a1e19600f884cbf and fixed in 7.1.6 with commit 016a50379d17b886d12a4efa5211a418e035fe70
	Issue introduced in 6.16 with commit f6226ae7a0cd47aaa9175aca6a1e19600f884cbf and fixed in 7.2-rc5 with commit b52c5103f64ee825996ca1ab8df7283cde8c5f86

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-68342
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	drivers/net/ovpn/peer.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/c5bf6b39be235ef578af4d39872f0c68cda3b937
	https://git.kernel.org/stable/c/016a50379d17b886d12a4efa5211a418e035fe70
	https://git.kernel.org/stable/c/b52c5103f64ee825996ca1ab8df7283cde8c5f86
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.