<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 30 Sep 2026 01:30:09 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-64045 — ovpn: tcp - use cached peer pointer in ovpn_tcp_close()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-64045</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;ovpn: tcp - use cached peer pointer in ovpn_tcp_close()&lt;/p&gt;
&lt;p&gt;ovpn_tcp_close() loads the ovpn_socket via rcu_dereference_sk_user_data()
under rcu_read_lock(), takes a reference on sock-&amp;gt;peer, caches the peer
pointer in a local, and drops the read lock. It then passes sock-&amp;gt;peer
(rather than the cached local) to ovpn_peer_del(), re-dereferencing the
ovpn_socket after the RCU read section has ended.&lt;/p&gt;
&lt;p&gt;Unlike ovpn_tcp_sendmsg(), which uses the same &amp;#34;load under RCU, use
after unlock&amp;#34; pattern but is protected by lock_sock() held across the
function, ovpn_tcp_close() runs without the socket lock: inet_release()
invokes sk_prot-&amp;gt;close() without taking lock_sock first.&lt;/p&gt;
&lt;p&gt;ovpn_socket_release() can therefore complete its kref_put -&amp;gt; detach -&amp;gt;
synchronize_rcu -&amp;gt; kfree(sock) sequence concurrently, in the window
after ovpn_tcp_close() drops rcu_read_lock() but before it dereferences
sock-&amp;gt;peer. The synchronize_rcu() in ovpn_socket_release() protects
readers that use the dereferenced pointer inside the RCU read section,
not those that escape the pointer to a local and use it afterwards.&lt;/p&gt;
&lt;p&gt;A reproducer follows the pattern of commit 94560267d6c4 (&amp;#34;ovpn: tcp -
don&amp;#39;t deref NULL sk_socket member after tcp_close()&amp;#34;): trigger a peer
removal (keepalive expiration or netlink OVPN_CMD_DEL_PEER) at the same
moment userspace closes the TCP fd. That commit fixed the detach-side
of the same race window; this one fixes the close-side at a diff…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;ovpn: tcp - use cached peer pointer in ovpn_tcp_close()&lt;/p&gt;
&lt;p&gt;ovpn_tcp_close() loads the ovpn_socket via rcu_dereference_sk_user_data()
under rcu_read_lock(), takes a reference on sock-&amp;gt;peer, caches the peer
pointer in a local, and drops the read lock. It then passes sock-&amp;gt;peer
(rather than the cached local) to ovpn_peer_del(), re-dereferencing the
ovpn_socket after the RCU read section has ended.&lt;/p&gt;
&lt;p&gt;Unlike ovpn_tcp_sendmsg(), which uses the same &amp;#34;load under RCU, use
after unlock&amp;#34; pattern but is protected by lock_sock() held across the
function, ovpn_tcp_close() runs without the socket lock: inet_release()
invokes sk_prot-&amp;gt;close() without taking lock_sock first.&lt;/p&gt;
&lt;p&gt;ovpn_socket_release() can therefore complete its kref_put -&amp;gt; detach -&amp;gt;
synchronize_rcu -&amp;gt; kfree(sock) sequence concurrently, in the window
after ovpn_tcp_close() drops rcu_read_lock() but before it dereferences
sock-&amp;gt;peer. The synchronize_rcu() in ovpn_socket_release() protects
readers that use the dereferenced pointer inside the RCU read section,
not those that escape the pointer to a local and use it afterwards.&lt;/p&gt;
&lt;p&gt;A reproducer follows the pattern of commit 94560267d6c4 (&amp;#34;ovpn: tcp -
don&amp;#39;t deref NULL sk_socket member after tcp_close()&amp;#34;): trigger a peer
removal (keepalive expiration or netlink OVPN_CMD_DEL_PEER) at the same
moment userspace closes the TCP fd. That commit fixed the detach-side
of the same race window; this one fixes the close-side at a diff…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-64045</guid>
    </item>
  </channel>
</rss>
