CVE-2022-48910 in Linuxinformazioni

Riassunto

di VulDB • 17/06/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

net: ipv6: assicurarsi di chiamare ipv6_mc_down() al massimo una volta

Ci sono due motivi per cui addrconf_notify() viene chiamata con NETDEV_DOWN: o il dispositivo di rete sta effettivamente andando in down, oppure IPv6 è stato disabilitato sull'interfaccia.

Se uno dei due rimane in stato down mentre l'altro viene commutato (toggled), si chiama ripetutamente il codice per NETDEV_DOWN, inclusa ipv6_mc_down(), senza mai chiamare la corrispondente ipv6_mc_up() nel frattempo. Ciò provocherà l'allocazione di una nuova voce in idev->mc_tomb per ogni gruppo multicast a cui l'interfaccia è iscritta, causando a sua volta la perdita (leak) di uno struct ifmcaddr6 per ciascun gruppo multicast non banale a cui l'interfaccia è iscritta.

Il seguente script riproduttore provocherà la perdita di almeno $n oggetti:

ip addr add ff2e::4242/32 dev eth0 autojoin sysctl -w net.ipv6.conf.eth0.disable_ipv6=1 for i in $(seq 1 $n); do ip link set up eth0; ip link set down eth0 done

L'iscrizione a gruppi tramite IPV6_ADD_MEMBERSHIP (non privilegiato) o l'impostazione di sysctl net.ipv6.conf.eth0.forwarding su 1 (= iscrizione a ff02::2) possono essere utilizzati anche per creare un idev->mc_list non banale, che provocherà la perdita di oggetti con la corretta sequenza up-down.

Sulla base di entrambe le fonti degli eventi NETDEV_DOWN, lo stato IPv6 dell'interfaccia dovrebbe essere considerato:

- non pronto se l'interfaccia di rete non è pronta OPPURE se IPv6 è disabilitato per essa - pronto se l'interfaccia di rete è pronta E IPv6 è abilitato per essa

Le funzioni ipv6_mc_up() e ipv6_down() dovrebbero essere eseguite solo quando questo stato cambia.

Implementare ciò ricordando quando lo stato IPv6 diventa pronto ed eseguendo ipv6_mc_down() solo se effettivamente passa da ready a not ready.

L'altra direzione (not ready -> ready) funziona già correttamente, poiché:

- il codice attivato dalla notifica dell'interfaccia per NETDEV_UP / NETDEV_CHANGE esce anticipatamente se IPv6 è disabilitato, e - il codice attivato da disable_ipv6=0 salta completamente l'inizializzazione dell'interfaccia finché addrconf_link_ready(dev) restituisce false - chiamare ipv6_mc_up() ripetutamente non provoca alcuna perdita di memoria

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

Responsabile

Linux

Prenotare

21/08/2024

Divulgazione

22/08/2024

Moderazione

accettato

CPE

pronto

EPSS

0.00210

KEV

no

Attività

molto basso

Fonti

Do you want to use VulDB in your project?

Use the official API to access entries easily!