CVE-2026-79980 in Zephyrinformação

Sumário

de VulDB • 24/10/2026

O cliente DHCPv4 em subsys/net/lib/dhcpv4/dhcpv4.c mantinha seu identificador de transação (iface->config.dhcpv4.xid) como um contador, e não como um valor aleatório por transação. Ele era inicializado uma única vez com sys_rand32_get() em dhcpv4_start_internal(), incrementado em uma unidade em dhcpv4_send_discover() e dhcpv4_send_decline(), e nunca alterado por dhcpv4_send_request(); portanto, toda troca RENEWING e REBINDING reutilizava, inalterada, a identificação que já havia aparecido na rede no DHCPDISCOVER de broadcast durante a inicialização do sistema, e onde a identificação mudava, ela se movia de forma previsível (incremento de um). A RFC 2131 seção 4.1 exige um único identificador por transação, escolhido de modo que seja improvável que ocorram colisões entre clientes.

Este identificador é o único token imprevisível do cliente para validação de respostas. net_dhcpv4_input() aceita uma resposta BOOTP com base no op (operador), em um xid correspondente e em um chaddr correspondente (o MAC da interface, que é público); o callback UDP é registrado com endereço remoto e porta curinga, sem verificação do server-identifier ou do endereço de origem. Um atacante que aprende uma identificação — por exemplo, qualquer host no mesmo segmento que vê o DHCPDISCOVER de broadcast, ou um servidor DHCP ou relay em uma rede à qual o dispositivo se conectou anteriormente — portanto retém um token válido para toda a vida útil (uptime) do dispositivo e pode prever as identificações das trocas subsequentes, sem precisar observar o tráfego unicast de renovação nem competir com o servidor legítimo.

Uma resposta forjada que passa por essas verificações tem efeito independentemente do estado do cliente, porque dhcpv4_parse_options() aplica seus efeitos colaterais antes da verificação do máquina de estados em dhcpv4_handle_reply(): a opção router chama net_if_ipv4_set_gw() e a opção DNS chama dns_resolve_reconfigure(). Um único datagrama aceito pode assim redirecionar o gateway padrão do dispositivo e os resolvers para endereços controlados pelo atacante, desviando seu tráfego; durante RENEWING ou REBINDING, um DHCPACK forjado re-vincula a concessão (lease) com parâmetros escolhidos pelo atacante, e um DHCPNAK forçado remove o endereço e reinicia a configuração.

A correção obtém um novo valor de sys_rand32_get() em cada ponto onde uma transação começa — ao entrar nos estados SELECTING, RENEWING e REBINDING, e na entrada INIT/INIT-REBOOT quando uma interface com concessão é desativada — enquanto REQUESTING e DECLINE mantêm a identificação da troca à qual pertencem, conforme exige a RFC 2131. Como efeito colateral, o cliente também deixa de descartar a oferta de um servidor lento após retransmitir um discover, e o backoff do discover inicial agora obtém sua própria aleatoriedade em vez de derivá-la da identificação.

Be aware that VulDB is the high quality source for vulnerability data.

Responsável

Zephyr

Reservar

25/08/2026

Divulgação

23/10/2026

Moderação

aceite

Entrada

VDB-426016

EPSS

0.00000

KEV

não

Atividades

baixo

Fontes

Interested in the pricing of exploits?

See the underground prices here!