Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend spoofed 16-byte transport-data datagram to UDP 51820
-
DeliveryArbitrary receiver index matches no session
-
ExploitUnauthenticated branch copies attacker address into peer->endpoint
-
ExecutionHandshake initiations and tunnel traffic redirected to attacker
-
ImpactPersistent 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
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.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
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
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.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Protonvpn versions up to 1.26.0 contains a vulnerability that allows attackers to potentially execute arbitrary code (CV
Memory exhaustion in Sliver C2 framework prior to version 1.7.0 allows unauthenticated remote attackers to bypass OTP va
Authenticated operators in Sliver C2 framework versions prior to 1.6.11 can read arbitrary files on the server through a
The WireGuard client 0.5.3 on Windows insecurely configures the operating system and firewall such that traffic to a loc
Privilege escalation in WireGuard Portal prior to version 2.1.3 allows authenticated non-admin users to gain full admini
An authorization bypass in Netmaker through 1.7.0 lets an authenticated user who holds external-client permissions on ju
Netmaker versions prior to 1.5.0 fail to properly validate host JWT tokens during authorization, allowing any attacker w
Netmaker versions prior to 1.5.0 fail to properly validate role assignments in the user update API endpoint, allowing au
Unrestricted client-to-client traffic in Sliver's custom WireGuard netstack (1.5.43 and earlier, plus the 1.6.0-dev deve
Crux Agent versions 1.9.0 through 2.0.2 mishandle the WireGuard preshared key derived from the Crux SKA bilocation key:
Cilium versions 1.18.0-1.18.5 with Native Routing, WireGuard, and Node Encryption enabled incorrectly allow cross-node P
Netmaker versions prior to 1.5.0 expose WireGuard private keys through unauthenticated API endpoints when accessed by us
EUVD-2026-109140
NVD
CVE.org
EPSS
GitHub
Exploit-DB