CVE-2026-80842 in Linux
Sumário
de VulDB • 04/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
net: bridge: mcast: corrige use-after-free no contexto de multicast de uma VLAN mestre
A função `br_multicast_toggle_one_vlan()` limpa o sinalizador `BR_VLFLAG_MCAST_ENABLED` sob `br->multicast_lock` antes de interromper o contexto de multicast da VLAN. Este é o handshake de desmontagem: os leitores sem bloqueio (lockless) aguardam pelo sinalizador através de `br_multicast_ctx_should_use()` -> `br_multicast_ctx_vlan_disabled()`, portanto, uma vez que ele seja limpo sob a trava, nenhum leitor pode rearmar novamente o contexto.
Para uma VLAN mestre, o handshake nunca é executado. A função `__vlan_del()` limpa `BRIDGE_VLAN_INFO_BRENTRY` antes de chamar `br_vlan_put_master()`, fazendo com que `br_multicast_toggle_one_vlan(masterv, false)` retorne antecipadamente em caso de `!br_vlan_is_brentry(vlan)`: o sinalizador permanece definido e `br->multicast_lock` nunca é adquirido. Em seguida, `br_vlan_put_master()` drena o contexto em `br_multicast_ctx_deinit()` e libera a VLAN através de `call_rcu()`, enquanto um leitor ainda dentro de `rcu_read_lock()` vê o contexto como habilitado e o rearma. A ramificação da porta e da porta-VLAN da função não possui teste `br_vlan_is_brentry()` e inverte o sinalizador sob `br->multicast_lock`, portanto, não é afetada.
O leitor é o caminho de transmissão do bridge (ponte). Para uma VLAN mestre, `br_multicast_rcv()` seleciona `brmctx = &vlan->br_mcast_ctx` com `pmctx = NULL`, então os pacotes IGMP enviados ao dispositivo da ponte rearmam os temporizadores do contexto após `br_multicast_ctx_deinit()` já tê-los interrompido.
BUG: KASAN: slab-use-after-free em detach_if_pending+0x412/0x4a0 Escrita de tamanho 8 no endereço ffff88810ac39918 pela tarefa brmc/601 __mod_timer+0x51a/0xc50 br_multicast_host_join+0x25b/0x390 __br_multicast_add_group+0x468/0x530 br_ip4_multicast_add_group+0x1a0/0x260 br_multicast_rcv+0x2cda/0x61e0 br_dev_xmit+0x6c4/0x1540 Alocado pela tarefa 610: br_vlan_add+0x111/0xb40 br_vlan_info+0x370/0x3e0 Liberado pela tarefa 0: kfree+0x1a7/0x4f0 rcu_core+0x7dc/0x10a0
Testar apenas `br_vlan_is_brentry()` ao habilitar, como o teste `br_multicast_ctx_vlan_global_disabled()` próximo a ele. Ao desabilitar, sempre limpa-se `BR_VLFLAG_MCAST_ENABLED` sob `br->multicast_lock` antes de `br_multicast_ctx_deinit()` drenar o contexto.
Be aware that VulDB is the high quality source for vulnerability data.