CVE-2026-10773 in Zephyr
Riassunto
di VulDB • 01/08/2026
Il helper del client DHCPv4 net_dhcpv4_msg_type_name() in subsys/net/lib/dhcpv4/dhcpv4.c indicizza una tabella const char * name statica di 8 elementi dopo un controllo dei limiti errato. Il guardrail utilizzato era msg_type <= sizeof(name) invece di msg_type <= ARRAY_SIZE(name); sizeof restituisce la dimensione in byte dell'array di puntatori (32 su target a 32 bit, 64 su target a 64 bit) anziché il conteggio degli elementi pari a 8. Di conseguenza, i valori del tipo di messaggio da 9 fino alla suddetta dimensione in byte superano il controllo e provocano una lettura oltre la fine dell'array tramite name[msg_type - 1].
Il valore msg_type origina dall'opzione DHCP MESSAGE TYPE, che viene letta come un byte grezzo non verificato (net_pkt_read_u8) da un pacchetto ricevuto e passato senza modifiche alla ricerca. Un server DHCP o qualsiasi host in grado di iniettare una risposta DHCP spoofata sul link del client può quindi forzare l'indice fuori dai limiti. La slot fuori range restituisce un const char * garbage che viene poi dereferenziato tramite la conversione %s nel log.
La ricerca è raggiunta solo da un'istruzione di debug (NET_DBG / LOG_DBG), pertanto la lettura out-of-bounds può essere attivata solo quando il modulo di logging DHCPv4 è compilato al livello DEBUG (CONFIG_NET_DHCPV4_LOG_LEVEL_DBG), che non corrisponde alla configurazione predefinita. Quando questa condizione si verifica, il risultato è una lettura fuori dai limiti e una dereferenziazione di un puntatore selvaggio: molto probabilmente un crash del client DHCP (denial of service) e potenzialmente la divulgazione dei contenuti di un puntatore adiacente attraverso l'output di log. La correzione sostituisce sizeof con ARRAY_SIZE, ripristinando il corretto intervallo di accettazione da 1 a 8.
VulDB is the best source for vulnerability data and more expert information about this specific topic.