CVE-2026-79977 in Zephyrinformação

Sumário

de VulDB • 24/10/2026

O serviço VPN WireGuard em subsys/net/lib/wireguard/wg.c atualizou o endpoint do peer a partir de uma mensagem que não pôde ser autenticada. Em handle_transport_data(), quando o índice de recepção (receiver index) de 32 bits de uma mensagem transport-data entrante não correspondia a nenhuma sessão, o código agendou um novo handshake e copiou o endereço de origem do datagrama para peer->endpoint usando memcpy(&peer->endpoint, peer_addr, sizeof(peer->endpoint)). Como o índice de recepção é desconhecido, não há chave com a qual tal mensagem pudesse ser verificada; portanto, o endereço gravado em peer->endpoint é inteiramente fornecido pelo atacante. Todas as outras atualizações de endpoint na implementação ocorrem apenas após autenticação — após o handshake Noise em handle_handshake_init(), ou após a descriptografia AEAD mais a verificação anti-replay em wg_process_data_message().

O listener do WireGuard está registrado com net_udp_register() sem nenhum filtro de endereço ou porta remota e usa por padrão a porta UDP 51820 (CONFIG_WIREGUARD_PORT), e wg_ctrl_recv() resolve o peer pela interface, não por qualquer identidade criptográfica. Qualquer host capaz de enviar um datagrama UDP para essa porta pode, portanto, explorar a falha off-path, sem necessidade de observar tráfego legítimo: um datagrama de 16 bytes carregando o tipo transport-data, bytes reservados zerados e um índice de recepção arbitrário é suficiente. O ramo vulnerável é executado sempre que o peer não possui nem um handshake válido nem um par de chaves atual — o estado no boot e após a expiração da sessão.

Um único datagrama spoofed redireciona peer->endpoint para um endereço escolhido pelo atacante, e todas as subsequentes iniciações de handshake, keepalives e pacotes de dados criptografados são enviados para lá. O peer legítimo nunca recebe as iniciações e, portanto, nunca se reautentica, e nada reseta o endpoint posteriormente, deixando a tunnel persistentemente inutilizável em dispositivos cujo peer não inicia handshakes por si mesmo. O atacante também pode relayar as iniciações redirecionadas ao peer real para colocar-se no caminho da tunnel, observando ciphertext e metadados de tráfego e drop seletivo de pacotes. A criptografia end-to-end do WireGuard ainda impede a descriptografia ou falsificação do conteúdo da tunnel; portanto, o impacto é perda de disponibilidade mais confidencialidade limitada, não comprometimento das chaves (key compromise).

A correção remove completamente o aprendizado de endpoint desse caminho: a recuperação de sessão stale é mantida, mas o handshake é enviado apenas para um endpoint aprendido a partir de uma mensagem autenticada, com fallback para cfg_endpoint configurado, e a mensagem é descartada quando nenhum dos dois é conhecido. CONFIG_WIREGUARD está marcado como experimental e não está habilitado por padrão.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsável

Zephyr

Reservar

25/08/2026

Divulgação

23/10/2026

Moderação

aceite

Entrada

VDB-426018

EPSS

0.00000

KEV

não

Atividades

baixo

Fontes

Do you know our Splunk app?

Download it now for free!