{"answers":{"affected":"","exploited":"There is no known exploitation of CVE-2026-79977 in the wild and no public exploit code.","fix":"No fix has been published for CVE-2026-79977 yet. Limit exposure of the affected software until one is available.","what":"CVE-2026-79977 is a high-severity vulnerability in zephyrproject zephyr, published on 23 Oct 2026."},"fix_prompt":"Check this codebase for CVE-2026-79977 and fix it if it is affected.\n\nWhat it is: CVE-2026-79977 is a high-severity vulnerability in zephyrproject zephyr, published on 23 Oct 2026. \nExploitation: There is no known exploitation of CVE-2026-79977 in the wild and no public exploit code.\n\nAffected product: zephyrproject zephyr. No package-level version data is available, so check the vendor advisory linked from the reference page.\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-79977/ (Markdown: https://insights.sbomify.com/CVE-2026-79977/index.md)","id":"CVE-2026-79977","markdown":"https://insights.sbomify.com/CVE-2026-79977/index.md","name":"CVE-2026-79977","record":{"aliases":["GHSA-w8h4-r8m3-rf5j","UBUNTU-CVE-2026-79977"],"analysis":null,"analysis_generated_by":null,"assigner":"zephyr","cpe":[],"cvss":{"score":8.2,"severity":"high","source":"cna","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H","version":"3.1"},"cwes":[{"id":"CWE-346","name":"Origin Validation Error"},{"id":"CWE-306","name":"Missing Authentication for Critical Functionality"}],"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-\u003eendpoint with memcpy(\u0026peer-\u003eendpoint, peer_addr, sizeof(peer-\u003eendpoint)). Because the receiver index is unknown, there is no key with which such a message could be verified, so the address written into peer-\u003eendpoint 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().\n\nThe 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.\n\nA single spoofed datagram redirects peer-\u003eendpoint 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.\n\nThe 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.","ecosystems":[],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":false,"headline":"WireGuard peer endpoint learned from unauthenticated transport-data messages allows off-path tunnel hijack in Zephyr","id":"CVE-2026-79977","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":null,"product":null,"products":[],"type":null,"year":"2026"},"n_packages":0,"n_references":2,"next":{"headline":"Out-of-bounds write in the ADXL345 sensor driver RTIO streaming FIFO read path","id":"CVE-2026-79978"},"packages":[],"prev":{"headline":"NULL pointer dereference in the MCTP I2C+GPIO target binding triggerable by a peer I2C controller","id":"CVE-2026-79976"},"products":["zephyr"],"published":"2026-10-23","related":[],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":null,"exploitation":null,"technical_impact":null},"state":"PUBLISHED","updated":"2026-10-23","vendors":["zephyrproject"]},"summary":null,"url":"https://insights.sbomify.com/CVE-2026-79977/"}