Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-79977— WireGuard peer endpoint learned from unauthenticated transport-data messages allows off-path tunnel hijack in Zephyr

Quick assessment

Affected
zephyrproject zephyr
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

在 中,WireGuard VPN 服务在无法对接收到的消息进行身份验证的情况下,仍更新了同路节点(peer)的端点信息。具体而言,在 函数中,当传入的传输数据消息的 32 位接收方索引(receiver index)未匹配任何现有会话时,代码既调用了新的握手流程,又通过 将数据报的源地址复制到 。由于该接收方索引未知,系统无法获取用于验证此类消息的密钥,因此写入 的地址完全由攻击者控制。而在该实现中,所有其他端点更新操作均发生在身份验证之后:即在 中完成 Noise 握手之后,或在 中完成 AEAD 解密及防重放

CVSS 8.2 · High
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-79977

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
WireGuard peer endpoint learned from unauthenticated transport-data messages allows off-path tunnel hijack in Zephyr
Source: CVE Program / CVE List V5
Vulnerability Description
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.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
关键功能的认证机制缺失
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
zephyrproject zephyr 4.4.0 ~ 4.4.2 -

II. Public POCs for CVE-2026-79977

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-79977

请登录查看更多情报信息。

Patches & Fixes for CVE-2026-79977 (1)

Vendor Advisories for CVE-2026-79977 (1)

Same Patch Batch · zephyrproject · 2026-10-23 · 7 CVEs total

CVE-2026-79982 8.8 HIGH Out-of-bounds write in the USB Bluetooth HCI transport class when a controller-to-host HCI
CVE-2026-79979 7.8 HIGH Stale TLB entries after demand-paging page-out let arm64 user threads access reused physic
CVE-2026-19741 7.5 HIGH OpenThread joiner autostart uses a publicly documented default Joining Device Credential (
CVE-2026-79981 6.5 MEDIUM DNS resolver reuses a single UDP source port for all queries, easing off-path answer spoof
CVE-2026-79980 5.6 MEDIUM Predictable and reused DHCPv4 transaction identifier allows spoofed DHCP replies to reconf
CVE-2026-79978 3.6 LOW Out-of-bounds write in the ADXL345 sensor driver RTIO streaming FIFO read path

IV. Related Vulnerabilities

V. Comments for CVE-2026-79977

No comments yet


Leave a comment