HIGH Introduced in 3.16
bridge McastMglist UAF
CVE-2026-98026
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: net: bridge: mcast: properly convert mglist to rcu Sashiko reported a bug [1] that br_multicast_del_port_group unlists the port group not using proper rcu helper that preserves the next pointer and after that immediately frees the port group without waiting for rcu grace period. The only rcu walker of mglist is br_multicast_list_adjacent() and it turns out that function has always been buggy because mglist was never properly converted to RCU. Fix it by converting it to rcu and moving its initialization after eth_addr's. Initializing p->next can use RCU_INIT_POINTER because we have a barrier from the hlist_add_head_rcu call later, besides we're initializing an unpublished structure anyway. [1] https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260826014200.362304-1-littleddfu%40gmail.com
02KernelScan AI Analysis
Risk summary
A use-after-free vulnerability in the Linux bridge multicast subsystem allows a local attacker with low privileges to potentially achieve arbitrary kernel memory read/write or cause a denial of service. The bug requires a race condition between multicast group deletion and an adjacent database list walk, reachable from a user namespace with CAP_NET_ADMIN.
Vulnerability analysis
A bridge multicast group object is removed from a linked list without the RCU-safe deletion helper and then freed immediately, before readers have finished walking the list. Meanwhile, another code path traverses that same list under RCU protection, so it can follow a dangling pointer to memory that has already been freed. The fix converts both insertion and deletion to RCU-safe operations: deletions now preserve the next pointer for in-flight readers, and the free is deferred until the grace period ends so the object stays valid for any ongoing walks. The pointer initialization is also reordered to happen before the new node is published to the list. The vulnerable surface is reachable by any local process that can create or manipulate a bridge interface with multicast snooping — including from within a user namespace where unprivileged users can gain the needed capability — but exploiting the bug requires winning a timing race between group removal and a concurrent list query.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.12 | 3.16 | 6.12.111 | 98247c8264d2 |
| 6.18 | 3.16 | 6.18.53 | 38ab2a435001 |
| 6.6 | 3.16 | 6.6.158 | 37cb9a81600d |
| 7.2 | 3.16 | 7.2.7 | f7bf57e94a5d |
| mainline | 3.16 | 7.3 | 4b772869a1e5 |
| cip/6.12 | 3.16 | 6.12.111-cip32 | 98247c8264d2 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.111-cip32 |
| cip/6.1 | Affected — no CIP fix yet (latest 6.1.189-cip61) |
| cip/6.1-rt | Affected — no CIP fix yet (latest 6.1.189-cip61-rt32) |
| cip/5.10 | Affected — no CIP fix yet (latest 5.10.271-cip78) |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |
| cip/4.19 | Affected — no CIP fix yet (latest 4.19.325-cip136) |
| cip/4.19-rt | Affected — no CIP fix yet (latest 4.19.325-cip136-rt50) |
| cip/4.4 | Affected — no CIP fix yet (latest 4.4.302-cip115) |
| cip/4.4-rt | Affected — no CIP fix yet (latest 4.4.302-cip115-rt63) |