CVE-2025-38248
bridge: mcast: Behebung von Use-after-Free während der Router-Port-Konfiguration
- Veröffentlicht
- 09.07.2025
- Aktualisiert
- 05.08.2026
- CNA zuweisen
- Linux
- Beweise beobachtet
- 08.08.2026
Primäres CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HNiedrig · nächste 30 Tage
- Perzentil
- 18,5 %
- Modelldatum
- 21.09.2026
EPSS ist eine statistische Schätzung, keine Gewissheit oder ein Maß für die Auswirkung. Kombinieren Sie es mit CVSS, KEV-Status, Belichtung und Ihrer Umgebung.
Zusammenfassung
Im Linux-Kernel wurde die folgende Schwachstelle behoben: bridge: mcast: Behebung von Use-after-Free während der Router-Port-Konfiguration Die Bridge verwaltet eine globale Liste von Ports, hinter denen sich ein Multicast-Router befindet. Die Liste wird während der Weiterleitung konsultiert, um sicherzustellen, dass Multicast-Pakete an diese Ports weitergeleitet werden, selbst wenn die Ports nicht Mitglied im passenden MDB-Eintrag sind. Wenn pro-VLAN-Multicast-Snooping aktiviert ist, wird der pro-Port-Multicast-Kontext auf jedem Port deaktiviert und der Port aus der globalen Router-Port-Liste entfernt: # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 # ip link add name dummy1 up master br1 type dummy # ip link set dev dummy1 type bridge_slave mcast_router 2 $ bridge -d mdb show | grep router router ports on br1: dummy1 # ip link set dev br1 type bridge mcast_vlan_snooping 1 $ bridge -d mdb show | grep router Allerdings kann der Port selbst dann wieder zur globalen Liste hinzugefügt werden, wenn pro-VLAN-Multicast-Snooping aktiviert ist: # ip link set dev dummy1 type bridge_slave mcast_router 0 # ip link set dev dummy1 type bridge_slave mcast_router 2 $ bridge -d mdb show | grep router router ports on br1: dummy1 Seit Commit 4b30ae9adb04 ("net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions") deaktiviert die Multicast-Deaktivierung auf einem Port, wenn pro-VLAN-Multicast-Snooping aktiviert ist, die pro-{Port, VLAN}-Multicast-Kontexte und nicht den pro-Port-Kontext. Infolgedessen verbleibt ein Port auch nach seiner Löschung in der globalen Router-Port-Liste. Dies führt zu einem Use-after-Free [1], wenn die Liste durchlaufen wird (z. B. beim Hinzufügen eines neuen Ports zur Liste): # ip link del dev dummy1 # ip link add name dummy2 up master br1 type dummy # ip link set dev dummy2 type bridge_slave mcast_router 2 Ebenso können veraltete Einträge auch in der pro-VLAN-Router-Port-Liste gefunden werden. Wenn pro-VLAN-Multicast-Snooping deaktiviert ist, werden die pro-{Port, VLAN}-Kontexte auf jedem Port deaktiviert und der Port aus der pro-VLAN-Router-Port-Liste entfernt: # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 mcast_vlan_snooping 1 # ip link add name dummy1 up master br1 type dummy # bridge vlan add vid 2 dev dummy1 # bridge vlan global set vid 2 dev br1 mcast_snooping 1 # bridge vlan set vid 2 dev dummy1 mcast_router 2 $ bridge vlan global show dev br1 vid 2 | grep router router ports: dummy1 # ip link set dev br1 type bridge mcast_vlan_snooping 0 $ bridge vlan global show dev br1 vid 2 | grep router Allerdings kann der Port selbst dann wieder zur pro-VLAN-Liste hinzugefügt werden, wenn pro-VLAN-Multicast-Snooping deaktiviert ist: # bridge vlan set vid 2 dev dummy1 mcast_router 0 # bridge vlan set vid 2 dev dummy1 mcast_router 2 $ bridge vlan global show dev br1 vid 2 | grep router router ports: dummy1 Wenn die VLAN vom Port gelöscht wird, wird der pro-{Port, VLAN}-Multicast-Kontext nicht deaktiviert, da Multicast-Snooping auf der VLAN nicht aktiviert ist. Infolgedessen verbleibt der Port auch dann in der pro-VLAN-Router-Port-Liste, wenn er nicht mehr Mitglied der VLAN ist. Dies führt zu einem Use-after-Free [2], wenn die Liste durchlaufen wird (z. B. beim Hinzufügen eines neuen Ports zur Liste): # ip link add name dummy2 up master br1 type dummy # bridge vlan add vid 2 dev dummy2 # bridge vlan del vid 2 dev dummy1 # bridge vlan set vid 2 dev dummy2 mcast_router 2 Beheben Sie diese Probleme, indem Sie den Port in br_multicast_port_ctx_deinit() aus der relevanten (globalen oder pro-VLAN-)Router-Port-Liste entfernen. Die Funktion wird während der Port-Löschung mit dem pro-Port-Multicast-Kontext und während der VLAN-Löschung mit dem pro-{Port, VLAN}-Multicast-Kontext aufgerufen. Beachten Sie, dass das Löschen des Multicast-Router-Timers nicht ausreicht, da dieser nur die temporären Multicast-Router-Zustände (1 oder 3) und nicht den permanenten (2) berücksichtigt. [1] BUG: KASAN: slab-out-of-bounds in br_multicast_add_router.part.0+0x3f1/0x560 Write of size 8 at addr ffff888004a67328 by task ip/384 [...] Call Trace: <TASK> dump_stack ---abgeschnitten---
Verantwortungsvoller Umgang
Verwenden Sie Schwachstelleninformationen nur auf Systemen, die Sie besitzen oder zu deren Testen Sie berechtigt sind. Kitploit verlinkt auf öffentliche Forschungsmetadaten und speichert keinen Exploit-Code oder bösartige Payloads.