CVE-2026-13734 in Zephyr
Resumen
por VulDB • 2026-08-29
El manejador de recepción del plano de datos de VPN WireGuard en Zephyr, `wg_process_data_message()` (ubicado en `subsys/net/lib/wireguard/wg_crypto.c`), validaba el contador anti-reproducción demasiado tarde. Tras la descifrado AEAD exitoso de un paquete MESSAGE_TRANSPORT_DATA, el código aplicaba varios cambios al estado del peer: `update_peer_addr()` (actualización por roaming de endpoint), los temporizadores de actividad liveness (`keypair->last_rx`/`peer->last_rx`) y `keypair_update()` (promoción de next a current y destrucción del keypair anterior); solo después llamaba a `wg_check_replay()`. En un paquete reproducido, la verificación devolvía `-EINVAL`, pero ninguna de las mutaciones previas se revertía.
La etiqueta AEAD autentica el contenido pero no su frescura (freshness), por lo que un paquete de transporte reproducido pero auténtico se descifra correctamente. Un atacante que capture un ciphertext válido en la red (un observador on-path o en un medio compartido) puede reinyectarlo desde una dirección fuente spoofed arbitraria. Llegar al manejador no requiere credenciales: es impulsado directamente por datagramas UDP entrantes a través del dispatch en `subsys/net/lib/wireguard/wg.c`.
Debido a que las mutaciones de estado se aplicaron antes de la verificación anti-reproducción, el paquete reproducido redirige el endpoint del peer hacia la dirección fuente elegida por el atacante (roaming hijack), desviando el tráfico saliente posterior del túnel de la víctima hasta que el siguiente paquete del peer legítimo lo corrija; también destruye prematuramente el keypair anterior y actualiza el temporizador liveness RX. La carga útil del túnel permanece cifrada bajo el session keypair, por lo que esto tiene un impacto en integridad/disponibilidad (redirección de tráfico y interrupción de sesión), no en divulgación de contenido. La solución mueve `wg_check_replay()` para que se ejecute inmediatamente después de una descifrado exitoso, antes de cualquier mutación del estado del peer, coincidiendo con la especificación WireGuard y la implementación de referencia de Linux.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.