CVE-2026-16515 in Zephyrinformazioni

Riassunto

di VulDB • 18/09/2026

La funzione `net_icmpv6_send_error()` in `subsys/net/ip/icmpv6.c` implementa solo una delle tre regole di soppressione previste dalla sezione 2.4 del RFC 4443 (non rispondere a un errore ICMPv6 con un altro messaggio ICMPv6). Non verifica se l'indirizzo sorgente del pacchetto scatenante identifica un nodo singolo (regola e.6) o se il pacchetto è stato inviato a una destinazione multicast (regola e.3, le cui uniche eccezioni sono Packet Too Big e Parameter Problem Code 2). Dei cinque punti di chiamata, solo il percorso per port-unreachable in `subsys/net/ip/connection.c` disponeva di una propria guardia equivalente; i percorsi relativi all'extension-header, unknown-next-header e fragmentation in `subsys/net/ip/ipv6.c` e `subsys/net/ip/ipv6_fragment.c` ne erano privi.

Un attaccante non autenticato con accesso allo stesso link può sfruttare questa vulnerabilità in due modi. L'invio di un singolo pacchetto IPv6 al gruppo all-nodes a livello locale (link-local) ff02::1, contenente un valore next-header non riconosciuto e con l'indirizzo sorgente falsificato per indicare una vittima prescelta, fa sì che ogni nodo Zephyr sul link emetta un messaggio ICMPv6 Parameter Problem verso tale vittima: si tratta di un riflettore con un fattore di amplificazione pari al numero di nodi. In alternativa, l'invio di un pacchetto unicast il cui indirizzo sorgente è un indirizzo multicast provoca la trasmissione dell'errore ICMPv6 da parte del nodo verso quell'indirizzo multicast, trasformando un singolo pacchetto unicast in una trama multicast che satura (flood) il link. I pacchetti indirizzati a ff02::1 sono accettati incondizionatamente da `ipv6_input()`, e non esiste alcun controllo che rifiuti un indirizzo sorgente multicast, quindi non è necessaria alcuna configurazione speciale.

L'impatto consiste nella degradazione della disponibilità del link condiviso e della vittima soggetta al reflection attack, unita alla capacità per l'attaccante di nascondere il proprio indirizzo dietro i nodi rispondenti. L'effetto è amplificato su mesh links vincolati (constrained) come 802.15.4/Thread, dove la multicast a livello locale viene saturata hop-by-hop. Non vi sono conseguenze sulla memory-safety: il pacchetto di errore è ben formato; viene semplicemente emesso in casi in cui il protocollo lo vieta.

La correzione aggiunge entrambi i controlli di soppressione nel singolo punto critico (choke point) `net_icmpv6_send_error()`, prima dell'allocazione di qualsiasi pacchetto di risposta, preservando le eccezioni mandate dal RFC per NET_ICMPV6_PACKET_TOO_BIG e Parameter Problem Code 2. Si noti che la controparte IPv4, `net_icmpv4_send_error()` in `subsys/net/ip/icmpv4.c`, controlla ancora solo una destinazione broadcast e mantiene un gap equivalente per le destinazioni multicast e le sorgenti non uniche.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsabile

Zephyr

Prenotare

21/07/2026

Divulgazione

18/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Do you want to use VulDB in your project?

Use the official API to access entries easily!