CVE-2024-26837: net: bridge: switchdev: Skip MDB replays of deferred events on offload
In the Linux kernel, the following vulnerability has been resolved:
net: bridge: switchdev: Skip MDB replays of deferred events on offload
Before this change, generation of the list of MDB events to replay
would race against the creation of new group memberships, either from
the IGMP/MLD snooping logic or from user configuration.
While new memberships are immediately visible to walkers of
br->mdb_list, the notification of their existence to switchdev event
subscribers is deferred until a later point in time. So if a replay
list was generated during a time that overlapped with such a window,
it would also contain a replay of the not-yet-delivered event.
The driver would thus receive two copies of what the bridge internally
considered to be one single event. On destruction of the bridge, only
a single membership deletion event was therefore sent. As a
consequence of this, drivers which reference count memberships (at
least DSA), would be left with orphan groups in their hardware
database when the bridge was destroyed.
This is only an issue when replaying additions. While deletion events
may still be pending on the deferred queue, they will already have
been removed from br->mdb_list, so no duplicates can be generated in
that scenario.
To a user this meant that old group memberships, from a bridge in
which a port was previously attached, could be reanimated (in
hardware) when the port joined a new bridge, without the new bridge's
knowledge.
For example, on an mv88e6xxx system, create a snooping bridge and
immediately add a port to it:
root@infix-06-0b-00:~$ ip link add dev br0 up type bridge mcast_snooping 1 && \
> ip link set dev x3 up master br0
And then destroy the bridge:
root@infix-06-0b-00:~$ ip link del dev br0
root@infix-06-0b-00:~$ mvls atu
ADDRESS FID STATE Q F 0 1 2 3 4 5 6 7 8 9 a
DEV:0 Marvell 88E6393X
33:33:00:00:00:6a 1 static - - 0 . . . . . . . . . .
33:33:ff:87:e4:3f 1 static - - 0 . . . . . . . . . .
ff:ff:ff:ff:ff:ff 1 static - - 0 1 2 3 4 5 6 7 8 9 a
root@infix-06-0b-00:~$
The two IPv6 groups remain in the hardware database because the
port (x3) is notified of the host's membership twice: once via the
original event and once via a replay. Since only a single delete
notification is sent, the count remains at 1 when the bridge is
destroyed.
Then add the same port (or another port belonging to the same hardware
domain) to a new bridge, this time with snooping disabled:
root@infix-06-0b-00:~$ ip link add dev br1 up type bridge mcast_snooping 0 && \
> ip link set dev x3 up master br1
All multicast, including the two IPv6 groups from br0, should now be
flooded, according to the policy of br1. But instead the old
memberships are still active in the hardware database, causing the
switch to only forward traffic to those groups towards the CPU (port
0).
Eliminate the race in two steps:
1. Grab the write-side lock of the MDB while generating the replay
list.
This prevents new memberships from showing up while we are generating
the replay list. But it leaves the scenario in which a deferred event
was already generated, but not delivered, before we grabbed the
lock. Therefore:
2. Make sure that no deferred version of a replay event is already
enqueued to the switchdev deferred queue, before adding it to the
replay list, when replaying additions.
Security readout for executives and security teams
Plain-English summary
This Linux kernel issue can leave stale multicast memberships programmed in switch hardware after a bridge is deleted. A later bridge may then inherit hardware forwarding behavior it did not configure, causing multicast traffic to be forwarded incorrectly. The evidence points to a network behavior and availability/integrity concern, not a remotely weaponized code-execution flaw.
Executive priority
Treat as a targeted network reliability and segmentation correctness issue. Patch during normal network appliance maintenance unless the environment depends heavily on Linux bridge offload and multicast correctness, where priority should rise.
Technical view
A race in bridge switchdev MDB replay can duplicate add notifications while only one delete notification is later sent. Reference-counting drivers such as DSA can retain orphan multicast database entries in hardware. The fix locks MDB replay generation and skips replay entries already queued as deferred switchdev events.
Likely exposure
Exposure is most likely on Linux systems using bridge multicast snooping with switchdev or DSA hardware offload, including mv88e6xxx-class switch hardware. General Linux servers without this bridge offload path are less likely to be affected based on the supplied sources.
Exploitation context
The bundle does not show KEV listing, active exploitation, public exploit use, or CVSS scoring. The described trigger involves bridge lifecycle and multicast membership timing, producing stale hardware state rather than direct privilege escalation or code execution.
Researcher notes
The affected record and references identify Linux kernel bridge switchdev MDB replay behavior. Evidence names DSA and mv88e6xxx as impacted examples. No supplied source establishes exploitation in the wild, attacker prerequisites, or a standalone mitigation beyond applying vendor-fixed kernels.
Mitigation direction
Update to a Linux kernel containing the referenced stable fixes.
Prioritize network appliances using Linux bridge, switchdev, DSA, or multicast snooping.
Check vendor firmware advisories for backported kernel fixes.
Avoid unnecessary bridge churn on affected switchdev systems until patched.
Review multicast snooping configuration where hardware offload is enabled.
Validation and detection
Inventory kernels and identify systems in the affected Linux bridge offload path.
Check whether switchdev or DSA drivers are used on exposed devices.
Confirm vendor kernel includes one of the referenced stable commits.
Test bridge deletion and recreation in a lab before production rollout.
Inspect hardware multicast database state after bridge teardown where tooling exists.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
description · low confidence lookup
Database behavior lookup
The CVE wording references database injection or access, so collection and exfiltration review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.