<?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://db.gcve.eu</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>Sun, 25 Oct 2026 21:47:56 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-79977 — WireGuard peer endpoint learned from unauthenticated transport-data messages allows off-path tunnel hijack in Zephyr</title>
      <link>https://db.gcve.eu/vuln/cve-2026-79977</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; zephyrproject zephyr&lt;/p&gt;
&lt;p&gt;The WireGuard VPN service in subsys/net/lib/wireguard/wg.c updated the peer endpoint from a message it could not authenticate. In handle_transport_data(), when the 32-bit receiver index of an incoming transport-data message matched no session, the code both scheduled a new handshake and copied the datagram&amp;#39;s source address into peer-&amp;gt;endpoint with memcpy(&amp;amp;peer-&amp;gt;endpoint, peer_addr, sizeof(peer-&amp;gt;endpoint)). Because the receiver index is unknown, there is no key with which such a message could be verified, so the address written into peer-&amp;gt;endpoint is entirely attacker-supplied. Every other endpoint update in the implementation happens only after authentication — after the Noise handshake in handle_handshake_init(), or after AEAD decryption plus the anti-replay check in wg_process_data_message().&lt;/p&gt;
&lt;p&gt;The WireGuard listener is registered with net_udp_register() using no remote address or port filter and defaults to UDP port 51820 (CONFIG_WIREGUARD_PORT), and wg_ctrl_recv() resolves the peer by interface rather than by any cryptographic identity. Any host able to send a UDP datagram to that port can therefore reach the defect off-path, with no need to observe legitimate traffic: a 16-byte datagram carrying the transport-data type, zeroed reserved bytes and an arbitrary receiver index is sufficient. The vulnerable branch runs whenever the peer has neither a valid handshake nor a current keypair — the state at boot and after a session expires.&lt;/p&gt;
&lt;p&gt;A single spoofed datagram redirects pee…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; zephyrproject zephyr&lt;/p&gt;
&lt;p&gt;The WireGuard VPN service in subsys/net/lib/wireguard/wg.c updated the peer endpoint from a message it could not authenticate. In handle_transport_data(), when the 32-bit receiver index of an incoming transport-data message matched no session, the code both scheduled a new handshake and copied the datagram&amp;#39;s source address into peer-&amp;gt;endpoint with memcpy(&amp;amp;peer-&amp;gt;endpoint, peer_addr, sizeof(peer-&amp;gt;endpoint)). Because the receiver index is unknown, there is no key with which such a message could be verified, so the address written into peer-&amp;gt;endpoint is entirely attacker-supplied. Every other endpoint update in the implementation happens only after authentication — after the Noise handshake in handle_handshake_init(), or after AEAD decryption plus the anti-replay check in wg_process_data_message().&lt;/p&gt;
&lt;p&gt;The WireGuard listener is registered with net_udp_register() using no remote address or port filter and defaults to UDP port 51820 (CONFIG_WIREGUARD_PORT), and wg_ctrl_recv() resolves the peer by interface rather than by any cryptographic identity. Any host able to send a UDP datagram to that port can therefore reach the defect off-path, with no need to observe legitimate traffic: a 16-byte datagram carrying the transport-data type, zeroed reserved bytes and an arbitrary receiver index is sufficient. The vulnerable branch runs whenever the peer has neither a valid handshake nor a current keypair — the state at boot and after a session expires.&lt;/p&gt;
&lt;p&gt;A single spoofed datagram redirects pee…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-79977</guid>
    </item>
  </channel>
</rss>
