Katalog CVE

CVE-2026-99117

WysokieCVSS 7.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.18%

Percentyl 7 - wyżej niż 7% wszystkich znanych CVE

Streszczenie

W jądrze Linux w podsystemie mostu sieciowego (net: bridge) podczas usuwania portu wielokrotnego rozgłaszania (multicast) dochodzi do przedwczesnego przerwania iteracji po liście grup portu. Funkcja hlist_del_init() czyści wskaźnik ->next usuwanego węzła, co kończy pętlę i pozostawia grupy portu z wiszącym wskaźnikiem ->key.port po zwolnieniu portu, prowadząc do użycia po zwolnieniu (use-after-free) wykrywanego przez KASAN w __mdb_fill_info.

Ocena ryzyka

Podatność może powodować awarie jądra (panic) oraz potencjalne skutki bezpieczeństwa wynikające z użycia po zwolnieniu pamięci, co może być wykorzystane do eskalacji uprawnień lub destabilizacji systemu.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę, która zastępuje hlist_del_init() przez hlist_del_init_rcu() i pomija już usunięte grupy w br_multicast_find_del_pg().

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: net: bridge: mcast: don't truncate the port group walk on teardown __br_multicast_disable_port_ctx() and br_multicast_del_port() walk port->mglist with hlist_for_each_entry_safe(). However, br_multicast_find_del_pg() can also delete other entries from the same list through br_multicast_fwd_src_remove() or __fwd_del_star_excl(). If such an entry is the iterator's saved next node, hlist_del_init() clears its ->next and terminates the walk early. The reproducer triggers this in both teardown walks, leaving port groups in the bridge mdb with a dangling ->key.port after del_nbp() frees the port: BUG: KASAN: slab-use-after-free in __mdb_fill_info+0x1191/0x1320 __mdb_fill_info+0x1191/0x1320 br_mdb_dump+0x594/0xe40 rtnl_mdb_dump+0x1cf/0x5d0 Use hlist_del_init_rcu() to unlink the group while preserving ->next. br_multicast_del_pg() and the teardown walks run under br->multicast_lock. The GC worker must acquire the same lock before detaching the group for destruction, so the node remains alive while the walk uses the preserved pointer. Preserving ->next means a walk can now reach a group that an earlier iteration already deleted as a side effect. That group is off mp->ports, so br_multicast_find_del_pg() would fall through its port scan and hit the trailing WARN_ON(1). Skip such groups at the top of that helper: a port group is put on port->mglist when it is created and only unlinked when it is deleted, so hlist_unhashed() identifies exactly this case.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS