CVE-2025-38248
bridge: mcast: Correzione dell'uso dopo il rilascio durante la configurazione della porta del router
- Pubblicato
- 9 lug 2025
- Aggiornato
- 5 ago 2026
- Assegnazione CNA
- Linux
- Evidenza osservata
- 8 ago 2026
bridge: mcast: Correzione dell'uso dopo il rilascio durante la configurazione della porta del router
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HBasso · prossimi 30 giorni
L'EPSS è una stima statistica, non una certezza o una misura di impatto. Combinalo con CVSS, stato KEV, esposizione e ambiente.
Nel kernel Linux, è stata risolta la seguente vulnerabilità: bridge: mcast: Correzione di use-after-free durante la configurazione della porta router Il bridge mantiene un elenco globale di porte dietro le quali risiede un router multicast. L'elenco viene consultato durante l'inoltro per garantire che i pacchetti multicast vengano inoltrati a queste porte anche se le porte non sono membri della voce MDB corrispondente. Quando lo snooping multicast per-VLAN è abilitato, il contesto multicast per-porta viene disabilitato su ciascuna porta e la porta viene rimossa dall'elenco globale delle porte router: # 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 Tuttavia, la porta può essere ri-aggiunta all'elenco globale anche quando lo snooping multicast per-VLAN è abilitato: # 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 Dal commit 4b30ae9adb04 ("net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions"), quando lo snooping multicast per-VLAN è abilitato, la disabilitazione multicast su una porta disabiliterà i contesti multicast per-{porta, VLAN} e non quello per-porta. Di conseguenza, una porta rimarrà nell'elenco globale delle porte router anche dopo la sua eliminazione. Ciò porterà a un use-after-free [1] quando l'elenco viene attraversato (ad esempio, quando si aggiunge una nuova porta all'elenco): # 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 Analogamente, voci obsolete possono essere trovate anche nell'elenco delle porte router per-VLAN. Quando lo snooping multicast per-VLAN è disabilitato, i contesti per-{porta, VLAN} vengono disabilitati su ciascuna porta e la porta viene rimossa dall'elenco delle porte router per-VLAN: # 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 Tuttavia, la porta può essere ri-aggiunta all'elenco per-VLAN anche quando lo snooping multicast per-VLAN è disabilitato: # 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 Quando la VLAN viene eliminata dalla porta, il contesto multicast per-{porta, VLAN} non verrà disabilitato poiché lo snooping multicast non è abilitato sulla VLAN. Di conseguenza, la porta rimarrà nell'elenco delle porte router per-VLAN anche dopo che non è più membro della VLAN. Ciò porterà a un use-after-free [2] quando l'elenco viene attraversato (ad esempio, quando si aggiunge una nuova porta all'elenco): # 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 Correggere questi problemi rimuovendo la porta dall'elenco pertinente (globale o per-VLAN) delle porte router in br_multicast_port_ctx_deinit(). La funzione viene invocata durante l'eliminazione della porta con il contesto multicast per-porta e durante l'eliminazione della VLAN con il contesto multicast per-{porta, VLAN}. Si noti che l'eliminazione del timer del router multicast non è sufficiente poiché gestisce solo gli stati temporanei del router multicast (1 o 3) e non quello permanente (2). [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 ---troncato---
Exploit C per CVE-2025-38248 che supporta tecniche di attacco ROP e data-only per la ricerca sullo sfruttamento binario e la verifica delle vulnerabilità.
Utilizza le informazioni sulla vulnerabilità solo sui sistemi che possiedi o che sei autorizzato a testare. Kitploit si collega ai metadati della ricerca pubblica e non memorizza codici exploit o payload dannosi.