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.
CVSS Details
- CVSS 3.1 Base Score: 4.7
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-rt-modulesUpgrade kernel-rt-debug-develUpgrade kernel-rt-debugUpgrade kernel-debugUpgrade kernel-zfcpdumpUpgrade kernel-coreUpgrade kernel-rt-coreUpgrade kernel-rt-debug-kvmUpgrade kernel-headersUpgrade kernel-docUpgrade kernel-rt-debug-modules-extraUpgrade kernel-tools-libsUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-debug-modulesUpgrade kernel-modules-extraUpgrade kernel-modulesUpgrade kernel-debug-modules-extraUpgrade kernel-zfcpdump-develUpgrade perfUpgrade kernel-develUpgrade kernel-debug-coreUpgrade kernel-debug-develUpgrade kernel-rt-debug-modulesUpgrade kernel-rt-kvmUpgrade kernel-abi-stablelistsUpgrade kernel-tools-libs-develUpgrade bpftoolUpgrade kernelUpgrade python3-perfUpgrade kernel-rt-modules-extraUpgrade kernel-zfcpdump-modulesUpgrade kernel-rt-debug-coreUpgrade kernel-cross-headersUpgrade kernel-zfcpdump-coreUpgrade kernel-toolsUpgrade kernel-rtUpgrade kernel-rt-devel | Aug 12, 2024 | Apr 17, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-toolsUpgrade perfUpgrade kernel-debuginfo-common-aarch64Upgrade bpftool-debuginfoUpgrade bpftoolUpgrade kernel-livepatch-6.1.82-99.168Upgrade kernel-libbpf-staticUpgrade kernel-modules-extra-commonUpgrade kernelUpgrade kernel-modules-extraUpgrade perf-debuginfoUpgrade kernel-headersUpgrade kernel-develUpgrade kernel-tools-develUpgrade python3-perfUpgrade kernel-libbpf-develUpgrade kernel-debuginfo-common-x86_64Upgrade python3-perf-debuginfoUpgrade kernel-debuginfoUpgrade kernel-libbpfUpgrade kernel-tools-debuginfo | Feb 17, 2025 | Apr 17, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | Apr 17, 2024 |
| Oracle_linux | — | Upgrade kernel | Aug 16, 2024 | Apr 17, 2024 |
| Redhat_linux | — | Upgrade kernel-rtUpgrade kernelNo solution exists | Aug 12, 2024 | Apr 17, 2024 |
| Rocky_linux | — | Upgrade kernel-tools-libs-develUpgrade kernel-rt-debuginfoUpgrade bpftoolUpgrade kernel-rtUpgrade kernel-rt-modules-extraUpgrade kernel-tools-libsUpgrade kernel-rt-modulesUpgrade kernel-toolsUpgrade kernel-rt-debug-debuginfoUpgrade kernel-rt-debug-coreUpgrade kernel-debug-modules-extraUpgrade kernel-rt-develUpgrade python3-perf-debuginfoUpgrade kernel-debug-modulesUpgrade kernel-rt-kvmUpgrade perfUpgrade kernel-debug-debuginfoUpgrade kernel-debugUpgrade kernel-rt-debugUpgrade kernel-rt-debug-develUpgrade kernel-debug-develUpgrade kernel-rt-coreUpgrade kernel-cross-headersUpgrade kernel-headersUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-rt-debug-modules-extraUpgrade perf-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-modulesUpgrade kernelUpgrade kernel-rt-debug-kvmUpgrade python3-perfUpgrade kernel-rt-debug-modulesUpgrade kernel-coreUpgrade bpftool-debuginfoUpgrade kernel-develUpgrade kernel-debug-coreUpgrade kernel-debuginfoUpgrade kernel-modules-extraUpgrade kernel-rt-debuginfo-common-x86_64 | Aug 22, 2024 | Apr 17, 2024 |
| Suse | — | Upgrade kernel-rt-vdsoUpgrade kernel-rt_debugUpgrade kernel-source-azureUpgrade dtb-caviumUpgrade kernel-64kbUpgrade kernel-64kb-optionalUpgrade dtb-renesasUpgrade dtb-amdUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-zfcpdumpUpgrade kernel-devel-azureUpgrade dtb-freescaleUpgrade dtb-socionextUpgrade gfs2-kmp-64kbUpgrade ocfs2-kmp-azureUpgrade dtb-marvellUpgrade dtb-allwinnerUpgrade kernel-debugUpgrade kernel-sourceUpgrade kernel-symsUpgrade kernel-source-rtUpgrade kernel-kvmsmall-develUpgrade dtb-appleUpgrade dtb-broadcomUpgrade ocfs2-kmp-rtUpgrade kernel-azure-extraUpgrade kernel-64kb-livepatch-develUpgrade dlm-kmp-64kbUpgrade kernel-kvmsmallUpgrade kselftests-kmp-64kbUpgrade reiserfs-kmp-defaultUpgrade kernel-azure-vdsoUpgrade dtb-hisiliconUpgrade gfs2-kmp-azureUpgrade kernel-syms-rtUpgrade kernel-kvmsmall-vdsoUpgrade kernel-azureUpgrade kernel-rt_debug-develUpgrade kernel-source-vanillaUpgrade kernel-default-livepatch-develUpgrade dtb-alteraUpgrade kernel-default-develUpgrade ocfs2-kmp-defaultUpgrade dtb-exynosUpgrade kernel-rt-optionalUpgrade kselftests-kmp-azureUpgrade dtb-amazonUpgrade gfs2-kmp-rtUpgrade ocfs2-kmp-64kbUpgrade kernel-azure-optionalUpgrade reiserfs-kmp-rtUpgrade kernel-debug-develUpgrade reiserfs-kmp-64kbUpgrade kernel-docs-htmlUpgrade cluster-md-kmp-azureUpgrade dtb-lgUpgrade kernel-rt-livepatch-develUpgrade kernel-default-livepatchUpgrade gfs2-kmp-defaultUpgrade dtb-armUpgrade kernel-default-extraUpgrade kernel-azure-livepatch-develUpgrade kernel-docsUpgrade dtb-mediatekUpgrade kernel-rt-livepatchUpgrade kernel-obs-qaUpgrade kernel-default-vdsoUpgrade dlm-kmp-rtUpgrade dlm-kmp-defaultUpgrade cluster-md-kmp-defaultUpgrade kernel-rt-extraUpgrade kernel-obs-buildUpgrade kselftests-kmp-rtUpgrade cluster-md-kmp-rtUpgrade kernel-64kb-develUpgrade kernel-debug-vdsoUpgrade kernel-syms-azureUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-rt-develUpgrade kernel-develUpgrade kernel-defaultUpgrade kernel-default-base-rebuildUpgrade dtb-amlogicUpgrade kernel-macrosUpgrade cluster-md-kmp-64kbUpgrade kernel-64kb-extraUpgrade dtb-qcomUpgrade kernel-debug-livepatch-develUpgrade reiserfs-kmp-azureUpgrade dtb-nvidiaUpgrade dtb-rockchipUpgrade dtb-xilinxUpgrade dtb-sprdUpgrade kselftests-kmp-defaultUpgrade kernel-rt_debug-vdsoUpgrade kernel-rtUpgrade kernel-default-optionalUpgrade kernel-default-baseUpgrade kernel-azure-develUpgrade dtb-apmUpgrade kernel-devel-rtUpgrade dlm-kmp-azure | Dec 5, 2025 | Sep 10, 2024 |
| Ubuntu | — | Upgrade linux-image-gcp-fipsUpgrade linux-image-nvidia-tegra-igxUpgrade linux-image-5.15.0-138-generic-64kUpgrade linux-image-oracleUpgrade linux-image-5.15.0-138-generic-lpaeUpgrade linux-image-azureUpgrade linux-image-azure-fipsUpgrade linux-image-5.15.0-1076-nvidiaUpgrade linux-image-5.15.0-1079-gkeUpgrade linux-image-5.15.0-1035-nvidia-tegraUpgrade linux-image-oem-20.04cUpgrade linux-image-5.15.0-1081-gcpUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-realtimeUpgrade linux-image-5.15.0-1087-azure-fipsUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-azure-cvmUpgrade linux-image-oem-20.04Upgrade linux-image-awsUpgrade linux-image-5.15.0-1035-nvidia-tegra-rtUpgrade linux-image-gkeop-5.15Upgrade linux-image-gcpUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-oem-20.04dUpgrade linux-image-5.15.0-1087-azure-fdeUpgrade linux-image-5.15.0-1082-realtimeUpgrade linux-image-5.15.0-1075-intel-iot-realtimeUpgrade linux-image-5.15.0-1076-nvidia-lowlatencyUpgrade linux-image-raspiUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-kvmUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-gkeUpgrade linux-image-5.15.0-1078-kvmUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-oem-20.04bUpgrade linux-image-generic-lpaeUpgrade linux-image-intel-iotgUpgrade linux-image-azure-lts-22.04Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-azure-fdeUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-5.15.0-1082-aws-fipsUpgrade linux-image-intelUpgrade linux-image-gkeopUpgrade linux-image-5.15.0-1023-nvidia-tegra-igxUpgrade linux-image-5.15.0-1064-gkeopUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-nvidia-tegraUpgrade linux-image-5.15.0-1046-xilinx-zynqmpUpgrade linux-image-aws-fipsUpgrade linux-image-ibmUpgrade linux-image-raspi-nolpaeUpgrade linux-image-lowlatencyUpgrade linux-image-generic-64kUpgrade linux-image-fipsUpgrade linux-image-5.15.0-138-lowlatencyUpgrade linux-image-5.15.0-138-genericUpgrade linux-image-genericUpgrade linux-image-virtualUpgrade linux-image-gke-5.15Upgrade linux-image-aws-lts-22.04Upgrade linux-image-5.15.0-1023-nvidia-tegra-igx-rtUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-5.15.0-1079-oracleUpgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-5.15.0-1076-raspiUpgrade linux-image-5.15.0-1081-gcp-fipsUpgrade linux-image-5.15.0-1077-intel-iotgUpgrade linux-image-5.15.0-138-fipsUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-5.15.0-1074-ibmUpgrade linux-image-5.15.0-1082-awsUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-nvidiaUpgrade linux-image-5.15.0-138-lowlatency-64kUpgrade linux-image-5.15.0-1087-azure | Feb 11, 2025 | Apr 17, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Oct 14, 2025 | Apr 17, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub