Skip to main content

Zephyr WireGuard CVE-2026-79977

| EUVDEUVD-2026-109140 HIGH
Missing Authentication for Critical Function (CWE-306)
2026-10-23 zephyr
8.2
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send spoofed 16-byte transport-data datagram to UDP 51820
  2. Delivery
    Arbitrary receiver index matches no session
  3. Exploit
    Unauthenticated branch copies attacker address into peer->endpoint
  4. Execution
    Handshake initiations and tunnel traffic redirected to attacker
  5. Impact
    Persistent tunnel denial-of-service or off-path man-in-the-middle

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication required for critical functions
MITRE ATT&CK

1 technique across 1 tactic: Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires CONFIG_WIREGUARD to be built and enabled - it is marked experimental and is NOT enabled by default, which is the primary limiting factor. The vulnerable branch runs only when the targeted peer has neither a valid handshake nor a current keypair, i.e. the normal state at boot and after a session expires (~180 s idle); an active session must not be in progress. The attacker only needs the ability to send a UDP datagram to the listener, which is registered via net_udp_register() with no remote address or port filter on the predictable default port 51820 (CONFIG_WIREGUARD_PORT), so no on-path position, no observed traffic and no credentials are needed. Persistent, unrecoverable denial applies specifically to devices whose configured peer does not itself initiate handshakes; a peer that initiates can re-establish, and the attacker must resend the trigger periodically to maintain poisoning.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H, base 8.2) accurately captures the mechanism: a single unauthenticated UDP datagram sent off-path to the default WireGuard port triggers the defect with no privileges, no user interaction and low complexity, yielding high availability impact (persistent tunnel denial) plus low confidentiality impact (traffic-metadata observation and selective dropping if the attacker relays initiations to MITM). Integrity is correctly N because WireGuard's end-to-end AEAD still prevents decryption or forgery of tunnel content - this is endpoint poisoning, not key compromise. No EPSS score is present in the input, so statistical exploitation probability cannot be weighed; the vulnerability is NOT in CISA KEV (status: not listed) and there is no indication of active exploitation. A detailed proof-of-concept - the exact 16-byte packet layout - is published in the GHSA advisory/original report, so working off-path exploitation is trivial in principle. The vuln.today decision label is 'this_week' (not act_now/emergency), which fits the picture: trivially exploitable but bounded in reach. The key risk-limiting factor, which the raw 8.2 does not express, is that CONFIG_WIREGUARD is experimental and not enabled by default, so the real-world attack surface is confined to devices that have deliberately built and enabled this subsystem. This is therefore a genuine, easy-to-exploit availability/MITM flaw on affected configurations, but exposure is gated by an opt-in experimental feature rather than being widespread.

Exploit ScenarioDerived

An off-path attacker who can route a UDP packet to a Zephyr device's WireGuard port (default 51820) sends a single 16-byte transport-data datagram (type 0x04, zeroed reserved bytes, an arbitrary receiver index) while the peer is in its post-boot or post-expiry state with no valid handshake or keypair. The device copies the spoofed source address into peer->endpoint and immediately directs all handshake initiations, keepalives and encrypted data to the attacker, leaving the tunnel permanently down or letting the attacker relay initiations to the real peer and sit in-path. A full PoC packet specification is published in the advisory, so the attack requires no observation of legitimate traffic and no cryptographic material.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 23, 2026

WireGuard in Zephyr (subsys/net/lib/wireguard) accepts an unauthenticated transport-data datagram and copies its source address into peer->endpoint, letting any host that can reach the listener's UDP port 51820 off-path redirect all subsequent handshake initiations, keepalives and encrypted tunnel traffic to an address of the attacker's choosing. Affected builds are Zephyr 4.4.0 through 4.4.2 with CONFIG_WIREGUARD enabled, which is marked experimental and off by default, and the defect fires only while the targeted peer has no valid handshake and no current keypair - the state at boot and after a session expires. The result is persistent tunnel denial (assessed A:H) and limited confidentiality loss (C:L) through traffic-metadata observation or selective dropping if the attacker relays redirected initiations; the Noise/AEAD cryptography prevents decryption or forgery, so keys are not compromised. The advisory's original report includes a 16-byte datagram recipe as a proof of concept; it is not verified as working exploit code, no public exploit is confirmed in use, and KEV status is not indicated - exploitation requires only UDP reachability to the listener, with no credentials or user interaction.

RemediationAI

Apply the upstream fix commit cbaaf3e9dbe08be21f01bd23142e1ffe91fd4db6 (PR #116722 on main, backported via PR #117179 on v4.4-branch), which stops endpoint learning from the unauthenticated transport-data path and instead sends the recovery handshake only to an endpoint learnt from an authenticated message, falling back to cfg_endpoint and dropping the datagram when neither is known; the projected fixed release is 4.5.0, so builds tracking v4.4.x need the branch backport until that release is confirmed (upstream fix available via PR/commit; released patched version not independently confirmed). Where updating is not immediately possible, the practical compensating controls are to leave CONFIG_WIREGUARD disabled - it is experimental and not enabled by default, and this removes the VPN functionality entirely - or, for deployments that need it, to restrict UDP port 51820 (CONFIG_WIREGUARD_PORT) to known peer addresses at the network boundary, which reduces the off-path attack surface but requires static peer addressing and breaks peers that roam. Note that a poisoned endpoint cannot be reset automatically once the tunnel has carried traffic, so recovery from an active poisoning event requires clearing or reconfiguring the peer state; details are in the vendor advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-w8h4-r8m3-rf5j.

Affected VersionsENISA

Zephyr 4.4.0 ≤4.4.2

Affected Packages

euvd zephyr no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Zephyr's WireGuard implementation follows the Noise IKpsk2 protocol: a 16-byte struct msg_transport_data header (type byte 0x04, three zeroed reserved bytes, a 32-bit receiver index, and an 8-byte counter) precedes AEAD-protected payload. In handle_transport_data(), the receiver index is resolved through peer_lookup_by_receiver(); when it matches no session and the peer has neither a valid handshake nor a current keypair, the pre-fix code set peer->send_handshake and executed memcpy(&peer->endpoint, peer_addr, sizeof(peer->endpoint)) on the datagram's source address. Because the receiver index is unknown to the defender, no key exists to authenticate that message - the root cause class is CWE-306 (missing authentication for a critical function), with the advisory additionally classifying it as CWE-346 (origin validation error). Every other endpoint update in the codebase is gated: handle_handshake_init() only after the Noise handshake, and wg_process_data_message()/wg_crypto.c only after AEAD decryption plus the anti-replay check. The listener itself is registered via net_udp_register() with a NULL remote address and remote port 0, so wg_ctrl_recv() resolves the peer by virtual interface rather than cryptographic identity and performs only length, reserved-byte and type validation before dispatch; CONFIG_WIREGUARD_PORT defaults to the well-known UDP 51820. wg_periodic_timer() → should_send_init() → start_handshake() then transmits to the poisoned peer->endpoint, and the only automatic restore of cfg_endpoint is a one-shot tied to peer->last_tx == 0, so it does not apply once the tunnel has carried traffic.

Know when Wireguard gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (zephyr) PRIMARY 8.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
vuln.today AI 8.2 HIGH

Any host sending one UDP packet to an unfiltered default port triggers it (AV:N/AC:L/PR:N/UI:N); persistent tunnel loss gives A:H, metadata exposure via relay gives C:L, and AEAD prevents forgery so I:N.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
High

DescriptionCVE.org

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's source address into peer->endpoint with memcpy(&peer->endpoint, peer_addr, sizeof(peer->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->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().

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.

A single spoofed datagram redirects peer->endpoint to an address of the attacker's choosing, and all subsequent handshake initiations, keepalives and encrypted data packets are sent there. The legitimate peer never receives the initiations and so never re-authenticates, and nothing resets the endpoint afterwards, leaving the tunnel persistently unusable on devices whose peer does not initiate handshakes itself. The attacker can also relay the redirected initiations to the real peer to place itself in the path of the tunnel, observing ciphertext and traffic metadata and selectively dropping packets. WireGuard's end-to-end cryptography still prevents decryption or forgery of tunnel content, so the impact is loss of availability plus limited confidentiality, not key compromise.

The fix removes the endpoint learning from this path entirely: the stale-session recovery is kept, but the handshake is sent only to an endpoint learnt from an authenticated message, falling back to the configured cfg_endpoint, and the message is dropped when neither is known. CONFIG_WIREGUARD is marked experimental and is not enabled by default.

Technical POC Analysis

CWE-306 (Missing Authentication for Critical Function), with CWE-346 (Origin Validation Error) as the secondary classification.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

CVE-2026-79977 is a high-severity vulnerability in Zephyr's experimental WireGuard implementation that allows any network-adjacent attacker to persistently redirect tunnel traffic to an arbitrary endpoint, causing denial of service and limited metadata exposure. Organizations using Zephyr 4.4.0-4.4.2 with WireGuard enabled are affected; if the feature is not enabled, risk is minimal. Leadership should prioritize remediation for any production or pilot deployment of this experimental networking stack.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 85% exploitable
Prevalence
Low
experimental WireGuard subsystem in an embedded RTOS, off by default
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Medium

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +41
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2022-50917 HIGH POC
7.8 Jan 13

Protonvpn versions up to 1.26.0 contains a vulnerability that allows attackers to potentially execute arbitrary code (CV

CVE-2026-25791 HIGH POC
7.5 Feb 09

Memory exhaustion in Sliver C2 framework prior to version 1.7.0 allows unauthenticated remote attackers to bypass OTP va

CVE-2026-25760 MEDIUM POC
6.5 Feb 06

Authenticated operators in Sliver C2 framework versions prior to 1.6.11 can read arbitrary files on the server through a

CVE-2023-35838 MEDIUM POC
5.7 Aug 09

The WireGuard client 0.5.3 on Windows insecurely configures the operating system and firewall such that traffic to a loc

CVE-2026-27899 HIGH
8.8 Feb 26

Privilege escalation in WireGuard Portal prior to version 2.1.3 allows authenticated non-admin users to gain full admini

CVE-2026-115325 HIGH
8.7 Oct 22

An authorization bypass in Netmaker through 1.7.0 lets an authenticated user who holds external-client permissions on ju

CVE-2026-29194 HIGH
8.1 Mar 07

Netmaker versions prior to 1.5.0 fail to properly validate host JWT tokens during authorization, allowing any attacker w

CVE-2026-29195 MEDIUM
6.5 Mar 07

Netmaker versions prior to 1.5.0 fail to properly validate role assignments in the user update API endpoint, allowing au

CVE-2025-27093 MEDIUM
6.3 Oct 28

Unrestricted client-to-client traffic in Sliver's custom WireGuard netstack (1.5.43 and earlier, plus the 1.6.0-dev deve

CVE-2026-107785 MEDIUM
6.3 Oct 09

Crux Agent versions 1.9.0 through 2.0.2 mishandle the WireGuard preshared key derived from the Crux SKA bilocation key:

CVE-2026-26963 MEDIUM
6.1 Feb 20

Cilium versions 1.18.0-1.18.5 with Native Routing, WireGuard, and Node Encryption enabled incorrectly allow cross-node P

CVE-2026-29196 MEDIUM
4.3 Mar 07

Netmaker versions prior to 1.5.0 expose WireGuard private keys through unauthenticated API endpoints when accessed by us

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy