CVE-2025-38248
bridge: mcast: Corrige o uso-após-liberação durante a configuração da porta do roteador
- Publicado
- 9 de jul. de 2025
- Atualizado
- 5 de ago. de 2026
- Atribuindo CNA
- Linux
- Evidência observada
- 8 de ago. de 2026
CVSS primário
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HBaixo · próximos 30 dias
- Percentil
- 18,5%
- Data do modelo
- 21 de set. de 2026
EPSS é uma estimativa estatística, não uma certeza ou uma medida de impacto. Combine-o com CVSS, status KEV, exposição e seu ambiente.
Resumo
No kernel do Linux, a seguinte vulnerabilidade foi resolvida: bridge: mcast: Corrigir use-after-free durante a configuração da porta do roteador A bridge mantém uma lista global de portas atrás das quais reside um roteador multicast. A lista é consultada durante o encaminhamento para garantir que pacotes multicast sejam encaminhados para essas portas, mesmo que as portas não sejam membros na entrada MDB correspondente. Quando o snooping multicast por VLAN está habilitado, o contexto multicast por porta é desabilitado em cada porta e a porta é removida da lista global de portas de roteador: # 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 No entanto, a porta pode ser readicionada à lista global mesmo quando o snooping multicast por VLAN está habilitado: # 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 Desde o commit 4b30ae9adb04 ("net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions"), quando o snooping multicast por VLAN está habilitado, a desabilitação multicast em uma porta desabilitará os contextos multicast por {porta, VLAN} e não o contexto por porta. Como resultado, uma porta permanecerá na lista global de portas de roteador mesmo após ser excluída. Isso levará a um use-after-free [1] quando a lista for percorrida (ao adicionar uma nova porta à lista, por exemplo): # 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 Da mesma forma, entradas obsoletas também podem ser encontradas na lista de portas de roteador por VLAN. Quando o snooping multicast por VLAN está desabilitado, os contextos por {porta, VLAN} são desabilitados em cada porta e a porta é removida da lista de portas de roteador por 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 No entanto, a porta pode ser readicionada à lista por VLAN mesmo quando o snooping multicast por VLAN está desabilitado: # 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 a VLAN é excluída da porta, o contexto multicast por {porta, VLAN} não será desabilitado, pois o snooping multicast não está habilitado na VLAN. Como resultado, a porta permanecerá na lista de portas de roteador por VLAN mesmo após não ser mais membro na VLAN. Isso levará a um use-after-free [2] quando a lista for percorrida (ao adicionar uma nova porta à lista, por exemplo): # 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 Corrija esses problemas removendo a porta da lista relevante (global ou por VLAN) de portas de roteador em br_multicast_port_ctx_deinit(). A função é invocada durante a exclusão da porta com o contexto multicast por porta e durante a exclusão da VLAN com o contexto multicast por {porta, VLAN}. Observe que excluir o temporizador do roteador multicast não é suficiente, pois ele apenas cuida dos estados temporários do roteador multicast (1 ou 3) e não do 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 ---truncado---
Uso responsável
Use informações de vulnerabilidade apenas em sistemas que você possui ou está autorizado a testar. O Kitploit vincula-se a metadados de pesquisa pública e não armazena código de exploração ou cargas maliciosas.