CVE-2022-48910 in Linuxinfo

Zusammenfassung

von VulDB • 27.05.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

net: ipv6: sicherstellen, dass ipv6_mc_down() höchstens einmal aufgerufen wird

Es gibt zwei Gründe, warum addrconf_notify() mit NETDEV_DOWN aufgerufen wird: Entweder das Netzwerkgerät wird tatsächlich heruntergefahren, oder IPv6 wurde auf der Schnittstelle deaktiviert.

Wenn einer von beiden heruntergefahren bleibt, während der andere umgeschaltet wird, wird der Code für NETDEV_DOWN, einschließlich ipv6_mc_down(), wiederholt aufgerufen, ohne dass dazwischen das entsprechende ipv6_mc_up() aufgerufen wird. Dies führt dazu, dass für jede Multicast-Gruppe, der die Schnittstelle beigetreten ist, ein neuer Eintrag in idev->mc_tomb zugewiesen wird, was wiederum einen struct ifmcaddr6 pro nicht-trivialer Multicast-Gruppe, der die Schnittstelle beigetreten ist, leakt.

Der folgende Reproducer wird mindestens $n Objekte leaken:

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

Das Beitreten von Gruppen mit IPV6_ADD_MEMBERSHIP (unprivilegiert) oder das Festlegen des sysctl net.ipv6.conf.eth0.forwarding auf 1 (=> Beitreten von ff02::2) kann ebenfalls verwendet werden, um eine nicht-triviale idev->mc_list zu erstellen, die bei der richtigen Up-Down-Sequenz Objekte leakt.

Basierend auf beiden Quellen für NETDEV_DOWN-Ereignisse sollte der IPv6-Status der Schnittstelle berücksichtigt werden:

- nicht bereit, wenn das Netzwerkinterface nicht bereit IST ODER IPv6 dafür deaktiviert ist - bereit, wenn das Netzwerkinterface bereit IST UND IPv6 dafür aktiviert ist

Die Funktionen ipv6_mc_up() und ipv6_down() sollten nur ausgeführt werden, wenn sich dieser Status ändert.

Dies wird implementiert, indem gespeichert wird, wann der IPv6-Status bereit ist, und ipv6_mc_down() nur dann ausgeführt wird, wenn er tatsächlich von bereit auf nicht bereit geändert wurde.

Die andere Richtung (nicht bereit -> bereit) funktioniert bereits korrekt, da:

- der durch die Schnittstellenbenachrichtigung ausgelöste Codepfad für NETDEV_UP / NETDEV_CHANGE frühzeitig zurückkehrt, wenn ipv6 deaktiviert ist, und - der durch disable_ipv6=0 ausgelöste Codepfad die vollständige Initialisierung der Schnittstelle überspringt, solange addrconf_link_ready(dev) false zurückgibt - das wiederholte Aufrufen von ipv6_mc_up() nichts leakt

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Zuständig

Linux

Reservieren

21.08.2024

Veröffentlichung

22.08.2024

Moderieren

akzeptiert

Eintrag

VDB-275506

CPE

bereit

EPSS

0.00210

KEV

nein

Aktivitäten

very low

Quellen

Interested in the pricing of exploits?

See the underground prices here!