CVE-2026-80842 in Linux
要約
〜によって VulDB • 2026年09月04日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
net: bridge: mcast: マスターVLANのマルチキャストコンテキストにおけるuse-after-freeを修正
br_multicast_toggle_one_vlan()は、VLANのマルチキャストコンテキストを終了する前に、br->multicast_lockの下でBR_VLFLAG_MCAST_ENABLEDフラグをクリアします。これはティアダウンハンドシェイクです:ロックレスなリーダーは br_multicast_ctx_should_use() -> br_multicast_ctx_vlan_disabled() を通じてこのフラグにゲートしています。そのため、ロック下でこれがクリアされると、どのリーダーもコンテキストを再度有効化(arm)できなくなります。
しかし、マスターVLANの場合、ハンドシェイクは実行されません。__vlan_del() は br_vlan_put_master() を呼び出す前に BRIDGE_VLAN_INFO_BRENTRY をクリアするため、br_multicast_toggle_one_vlan(masterv, false) は !br_vlan_is_brentry(vlan) の条件で早期リターンします。その結果、フラグは設定されたままになり、br->multicast_lock が取得されません。その後 br_vlan_put_master() によって br_multicast_ctx_deinit() でコンテキストが解放(drain)され、call_rcu() を通じてVLANがフリーされますが、rcu_read_lock() の内部にいるリーダーはまだそのコンテキストを有効化されたものと見なし、再度それを有効化しようとします。ポートおよびポート-VLANの分岐には br_vlan_is_brentry() テストがなく、br->multicast_lock 下でフラグを切り替えるため、この影響を受けません。
リーダースレッドはブリッジ送信パスです。マスターVLANの場合、br_multicast_rcv() は pmctx = NULL で brmctx = &vlan->br_mcast_ctx を選択するため、ブリッジデバイス宛てのIGMPパケットにより、br_multicast_ctx_deinit() によってタイマーが停止された後にコンテキストのタイマーが再度有効化されます。
BUG: KASAN: slab-use-after-free in detach_if_pending+0x412/0x4a0 Write of size 8 at addr ffff88810ac39918 by task 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 Allocated by task 610: br_vlan_add+0x111/0xb40 br_vlan_info+0x370/0x3e0 Freed by task 0: kfree+0x1a7/0x4f0 rcu_core+0x7dc/0x10a0
有効化時にのみ br_vlan_is_brentry() をテストし、隣接する br_multicast_ctx_vlan_global_disabled() テストと同様にします。無効化時は、br_multicast_ctx_deinit() がコンテキストを解放(drain)する前に、常に br->multicast_lock 下で BR_VLFLAG_MCAST_ENABLED をクリアするようにします。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.