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-debug-coreUpgrade kernel-coreUpgrade kernel-zfcpdump-develUpgrade perfUpgrade kernel-rt-coreUpgrade kernel-develUpgrade kernel-debug-develUpgrade kernel-rt-debug-develUpgrade kernel-tools-libsUpgrade kernel-debug-modules-extraUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-modulesUpgrade kernel-docUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-debug-kvmUpgrade kernel-rt-modulesUpgrade kernel-headersUpgrade kernel-rt-debug-modulesUpgrade kernel-rt-debugUpgrade kernel-debugUpgrade kernel-zfcpdumpUpgrade kernel-modules-extraUpgrade kernel-debug-modulesUpgrade kernel-zfcpdump-coreUpgrade kernel-tools-libs-develUpgrade kernel-cross-headersUpgrade kernel-abi-stablelistsUpgrade kernel-rt-debug-coreUpgrade python3-perfUpgrade kernel-toolsUpgrade kernel-rtUpgrade kernel-rt-modules-extraUpgrade kernel-zfcpdump-modulesUpgrade kernel-rt-kvmUpgrade kernelUpgrade bpftoolUpgrade kernel-rt-devel | Aug 12, 2024 | Apr 17, 2024 |
| Amazon_linux_2023 | — | Upgrade python3-perfUpgrade kernel-libbpf-develUpgrade kernel-develUpgrade kernel-modules-extraUpgrade kernel-headersUpgrade kernel-debuginfoUpgrade kernel-tools-develUpgrade kernelUpgrade kernel-debuginfo-common-x86_64Upgrade python3-perf-debuginfoUpgrade perf-debuginfoUpgrade kernel-libbpfUpgrade kernel-tools-debuginfoUpgrade bpftool-debuginfoUpgrade bpftoolUpgrade perfUpgrade kernel-livepatch-6.1.82-99.168Upgrade kernel-libbpf-staticUpgrade kernel-modules-extra-commonUpgrade kernel-toolsUpgrade kernel-debuginfo-common-aarch64 | 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 kernelUpgrade kernel-rtNo solution exists | Aug 12, 2024 | Apr 17, 2024 |
| Rocky_linux | — | Upgrade kernel-rt-modules-extraUpgrade kernel-tools-libsUpgrade kernel-debug-modulesUpgrade kernel-debug-modules-extraUpgrade kernel-tools-libs-develUpgrade kernel-rt-debug-debuginfoUpgrade kernel-rt-develUpgrade kernel-rt-debuginfoUpgrade perfUpgrade kernel-rt-kvmUpgrade kernel-toolsUpgrade python3-perf-debuginfoUpgrade kernel-rt-modulesUpgrade kernel-rt-debug-coreUpgrade kernel-rtUpgrade bpftoolUpgrade kernel-rt-debug-modulesUpgrade kernel-cross-headersUpgrade kernel-rt-coreUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-debug-debuginfoUpgrade kernel-develUpgrade kernel-debuginfoUpgrade kernelUpgrade kernel-rt-debug-kvmUpgrade kernel-debugUpgrade kernel-rt-debuginfo-common-x86_64Upgrade kernel-rt-debugUpgrade kernel-modules-extraUpgrade kernel-rt-debug-develUpgrade bpftool-debuginfoUpgrade python3-perfUpgrade kernel-debug-coreUpgrade kernel-coreUpgrade kernel-rt-debug-modules-extraUpgrade kernel-modulesUpgrade kernel-tools-debuginfoUpgrade kernel-debug-develUpgrade perf-debuginfoUpgrade kernel-headers | Aug 22, 2024 | Apr 17, 2024 |
| Suse | — | Upgrade kernel-default-livepatchUpgrade cluster-md-kmp-azureUpgrade dlm-kmp-64kbUpgrade kernel-64kb-livepatch-develUpgrade kernel-azure-extraUpgrade kernel-default-livepatch-develUpgrade kernel-kvmsmallUpgrade reiserfs-kmp-rtUpgrade kernel-rt-livepatch-develUpgrade ocfs2-kmp-64kbUpgrade ocfs2-kmp-defaultUpgrade dtb-exynosUpgrade kernel-rt_debugUpgrade kernel-source-azureUpgrade kselftests-kmp-azureUpgrade ocfs2-kmp-azureUpgrade reiserfs-kmp-defaultUpgrade kernel-debugUpgrade kernel-sourceUpgrade ocfs2-kmp-rtUpgrade reiserfs-kmp-64kbUpgrade kernel-symsUpgrade dtb-alteraUpgrade kernel-rt-vdsoUpgrade dtb-broadcomUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-azure-optionalUpgrade dtb-caviumUpgrade kernel-64kbUpgrade kernel-64kb-optionalUpgrade kernel-debug-develUpgrade gfs2-kmp-azureUpgrade dtb-renesasUpgrade dtb-amdUpgrade kernel-source-rtUpgrade kselftests-kmp-64kbUpgrade kernel-kvmsmall-develUpgrade dtb-amazonUpgrade kernel-default-develUpgrade dtb-lgUpgrade kernel-rt-optionalUpgrade dtb-marvellUpgrade dtb-freescaleUpgrade gfs2-kmp-64kbUpgrade kernel-docs-htmlUpgrade dtb-socionextUpgrade kernel-syms-rtUpgrade dtb-hisiliconUpgrade kernel-source-vanillaUpgrade kernel-azureUpgrade gfs2-kmp-rtUpgrade kernel-rt_debug-develUpgrade kernel-kvmsmall-vdsoUpgrade kernel-azure-vdsoUpgrade kernel-devel-azureUpgrade kernel-zfcpdumpUpgrade dtb-allwinnerUpgrade dtb-appleUpgrade kernel-debug-livepatch-develUpgrade dtb-xilinxUpgrade dtb-sprdUpgrade kernel-default-baseUpgrade kernel-default-extraUpgrade dtb-rockchipUpgrade dtb-mediatekUpgrade dtb-armUpgrade kernel-azure-develUpgrade dtb-amlogicUpgrade kernel-default-base-rebuildUpgrade dtb-apmUpgrade kernel-obs-buildUpgrade cluster-md-kmp-64kbUpgrade gfs2-kmp-defaultUpgrade kernel-64kb-extraUpgrade kernel-syms-azureUpgrade kernel-debug-vdsoUpgrade kernel-develUpgrade kernel-defaultUpgrade kernel-rt-develUpgrade kernel-rt_debug-livepatch-develUpgrade kselftests-kmp-rtUpgrade cluster-md-kmp-rtUpgrade kernel-64kb-develUpgrade kernel-rt-livepatchUpgrade kernel-docsUpgrade kernel-azure-livepatch-develUpgrade reiserfs-kmp-azureUpgrade dtb-qcomUpgrade kernel-macrosUpgrade dtb-nvidiaUpgrade dlm-kmp-azureUpgrade kselftests-kmp-defaultUpgrade kernel-rt_debug-vdsoUpgrade kernel-rtUpgrade kernel-devel-rtUpgrade kernel-default-optionalUpgrade kernel-rt-extraUpgrade dlm-kmp-rtUpgrade kernel-default-vdsoUpgrade kernel-obs-qaUpgrade cluster-md-kmp-defaultUpgrade dlm-kmp-default | Dec 5, 2025 | Sep 10, 2024 |
| Ubuntu | — | Upgrade linux-image-kvmUpgrade linux-image-5.15.0-1087-azure-fdeUpgrade linux-image-oem-20.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-azure-cvmUpgrade linux-image-5.15.0-1078-kvmUpgrade linux-image-nvidia-tegra-igxUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-raspiUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-gcp-fipsUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-5.15.0-1035-nvidia-tegra-rtUpgrade linux-image-oem-20.04cUpgrade linux-image-azureUpgrade linux-image-5.15.0-1076-nvidia-lowlatencyUpgrade linux-image-5.15.0-1082-realtimeUpgrade linux-image-5.15.0-1081-gcpUpgrade linux-image-gkeUpgrade linux-image-azure-fipsUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-oracleUpgrade linux-image-awsUpgrade linux-image-5.15.0-1079-gkeUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-realtimeUpgrade linux-image-5.15.0-138-generic-lpaeUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-5.15.0-1076-nvidiaUpgrade linux-image-5.15.0-1075-intel-iot-realtimeUpgrade linux-image-5.15.0-138-generic-64kUpgrade linux-image-5.15.0-1087-azure-fipsUpgrade linux-image-oem-20.04dUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-gcpUpgrade linux-image-5.15.0-1035-nvidia-tegraUpgrade linux-image-5.15.0-138-lowlatency-64kUpgrade linux-image-virtualUpgrade linux-image-5.15.0-1079-oracleUpgrade linux-image-aws-fipsUpgrade linux-image-intelUpgrade linux-image-5.15.0-1082-aws-fipsUpgrade linux-image-5.15.0-1046-xilinx-zynqmpUpgrade linux-image-5.15.0-1082-awsUpgrade linux-image-nvidia-tegraUpgrade linux-image-5.15.0-138-genericUpgrade linux-image-generic-64kUpgrade linux-image-intel-iotgUpgrade linux-image-azure-lts-22.04Upgrade linux-image-5.15.0-138-fipsUpgrade linux-image-generic-lpaeUpgrade linux-image-lowlatencyUpgrade linux-image-ibmUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-nvidiaUpgrade linux-image-lowlatency-64kUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-nvidia-tegra-rtUpgrade linux-image-aws-lts-22.04Upgrade linux-image-5.15.0-1077-intel-iotgUpgrade linux-image-5.15.0-138-lowlatencyUpgrade linux-image-genericUpgrade linux-image-5.15.0-1081-gcp-fipsUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-oem-20.04bUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-5.15.0-1074-ibmUpgrade linux-image-azure-fdeUpgrade linux-image-5.15.0-1076-raspiUpgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.15.0-1087-azureUpgrade linux-image-fipsUpgrade linux-image-5.15.0-1064-gkeopUpgrade linux-image-gke-5.15Upgrade linux-image-raspi-nolpaeUpgrade linux-image-gkeopUpgrade linux-image-5.15.0-1023-nvidia-tegra-igxUpgrade linux-image-5.15.0-1023-nvidia-tegra-igx-rt | 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