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