CVE-2026-10657 in Zephyr
Riassunto
di VulDB • 06/07/2026
Il resolver DNS di Zephyr rileva le query mDNS (.local) in dns_resolve_name_internal() (subsys/net/lib/dns/resolve.c) utilizzando memcmp(strrchr(query, '.'), ".local", 7), che legge sempre esattamente 7 byte dal puntatore del suffisso. Quando l'ultima etichetta dell'hostname risolto è più corta di 7 byte (ad esempio nomi che terminano con .org, .com, .net, .io o un punto finale), il confronto legge da 1 a 2 byte oltre il terminatore NUL della stringa. L'hostname (query) corrisponde al nome fornito dal chiamante passato attraverso il percorso standard getaddrinfo()/dns_get_addr_info()/dns_resolve_name() ed è influenzabile dagli operatori o da input remoti (nomi server dalla configurazione, URL analizzati o interfacce esposte alle applicazioni). Su un buffer di dimensioni strettamente definite senza margine di sicurezza (ad esempio una chiamata a getaddrinfo in userspace dove l'hostname viene copiato con k_usermode_string_alloc_copy per esattamente strlen+1 byte), la lettura eccessiva oltrepassa il limite dell'allocazione; se tale confine è non mappato (pagina di guardia, confine del dominio di memoria sotto MPU o address sanitizer), la over-read provoca un fault, causando una negazione del servizio. I byte letti in eccesso non vengono mai restituiti, quindi non vi è alcuna divulgazione di informazioni. Il difetto viene compilato solo quando CONFIG_MDNS_RESOLVER è abilitato, esiste dalla versione v1.10.0 ed è corretto sostituendo il memcmp a lunghezza fissa con un strcmp(ptr, ".local") sicuro per i terminatori NUL.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.