{"id":"CVE-2026-13734","summary":"Zephyr WireGuard mutates peer state before anti-replay check, enabling capture-replay endpoint hijack","details":"Zephyr's WireGuard VPN data-plane receive handler wg_process_data_message() in subsys/net/lib/wireguard/wg_crypto.c validated the anti-replay counter too late. After AEAD decryption of a MESSAGE_TRANSPORT_DATA packet succeeded, the code committed several peer-state changes — update_peer_addr() (endpoint roaming update), the keypair-\u003elast_rx/peer-\u003elast_rx liveness timers, and keypair_update() (promote next→current and destroy the previous keypair) — and only afterward called wg_check_replay(). On a replayed packet the replay check returned -EINVAL, but none of the preceding mutations were rolled back.\n\nThe AEAD tag authenticates content but not freshness, so a replayed-but-authentic transport packet decrypts correctly. An attacker who captures one valid ciphertext off the wire (an on-path or shared-medium observer) can re-inject it from an arbitrary spoofed source address. Reaching the handler requires no credentials: it is driven directly from inbound UDP datagrams via the dispatch in subsys/net/lib/wireguard/wg.c.\n\nBecause the state mutations committed before the replay check, the replay repoints the peer endpoint to the attacker-chosen source address (roaming hijack), redirecting the victim's subsequent outbound tunnel traffic until the legitimate peer's next packet re-corrects it; it also prematurely destroys the previous keypair and refreshes the RX liveness timer. The tunnel payload stays encrypted under the session keypair, so this is an integrity/availability impact (traffic redirection and session disruption), not payload disclosure. The fix moves wg_check_replay() to immediately after a successful decrypt, before any peer-state mutation, matching the WireGuard specification and the Linux reference implementation.","aliases":["GHSA-x7q7-fjx9-4vj2"],"modified":"2026-08-30T08:13:43.687240Z","published":"2026-08-28T20:38:49.617Z","database_specific":{"cna_assigner":"zephyr","cwe_ids":["CWE-294"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/13xxx/CVE-2026-13734.json"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/13xxx/CVE-2026-13734.json"},{"type":"ADVISORY","url":"https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-x7q7-fjx9-4vj2"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-13734"},{"type":"FIX","url":"https://github.com/zephyrproject-rtos/zephyr/commit/260c32ef9a89824bd25e17170e77aa4b98c84069"},{"type":"PACKAGE","url":"https://github.com/zephyrproject-rtos/zephyr"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/zephyrproject-rtos/zephyr","events":[{"introduced":"684c9e8f32e4373a21098559f748f06915f950c9"},{"fixed":"260c32ef9a89824bd25e17170e77aa4b98c84069"}],"database_specific":{"extracted_events":[{"introduced":"4.4.0"},{"fixed":"4.4.2"}],"source":["AFFECTED_FIELD","REFERENCES"]}}],"versions":["v4.4.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-13734.json","vanir_signatures_modified":"2026-08-30T08:13:43Z","vanir_signatures":[{"deprecated":false,"digest":{"function_hash":"149676935219164376109633264426281758290","length":4227},"id":"CVE-2026-13734-75358885","signature_type":"Function","signature_version":"v1","source":"https://github.com/zephyrproject-rtos/zephyr/commit/260c32ef9a89824bd25e17170e77aa4b98c84069","target":{"file":"subsys/net/lib/wireguard/wg_crypto.c","function":"wg_process_data_message"}},{"signature_type":"Line","signature_version":"v1","source":"https://github.com/zephyrproject-rtos/zephyr/commit/260c32ef9a89824bd25e17170e77aa4b98c84069","target":{"file":"subsys/net/lib/wireguard/wg_crypto.c"},"deprecated":false,"digest":{"line_hashes":["103117181195481898046377296938137561102","200193105173350827086555565201390309278","120016397421143916966133274059705253598","183591915554302493201444779430703257621","94412807766288332342251957609800720664","264567372987153853044681618809087079948","46389748866110386258952112316894761297","189112168022437083384529095691058172847","275938397972107350733286108778580483668","63774273026178763839172612472165551893","210339593483420656622908764248730391181"],"threshold":0.9},"id":"CVE-2026-13734-f75d4a9b"}]}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H"}]}