Sep 25, 2026·6 min read·61 visits
A missing break statement in the Linux kernel's bridge multicast fast-leave handler leads to a Use-After-Free condition, allowing remote network-based Denial of Service or local privilege escalation.
CVE-2026-74480 is a critical memory safety vulnerability in the Linux kernel's network bridge multicast routing subsystem (net: bridge) resulting from a Use-After-Free (UAF) condition during fast-leave processing of IGMP/MLD multicast groups.
The vulnerability CVE-2026-74480 affects the Linux kernel network bridge multicast routing subsystem, specifically within the br_multicast_leave_group function in net/bridge/br_multicast.c. This subsystem handles Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) snooping, allowing Layer 2 bridges to selectively forward multicast traffic to active subscribers. The defect is classified under CWE-416 (Use-After-Free).
The vulnerability is triggered during fast-leave processing of multicast groups on a bridge port that initially has multicast-to-unicast capabilities enabled and subsequently disabled. This logical sequence of configuration changes creates duplicate or overlapping port group entries in the bridge's multicast database. The attack surface is exposed to any network interface bridged by a vulnerable Linux host.
Successful exploitation can corrupt the internal database structures, resulting in an immediate local or remote Denial of Service (DoS) via kernel panic. In containerized or virtualized environments sharing the host network stack, the memory corruption could be leveraged to execute arbitrary code within the kernel context or achieve container escape.
The root cause of CVE-2026-74480 stems from an incomplete loop exit strategy during the deletion of a multicast port group. When multicast-to-unicast is active, the bridge tracks multiple net_bridge_port_group configurations for identical physical ports using distinct source MAC addresses. When this capability is subsequently disabled, the flag BR_MULTICAST_TO_UNICAST_BIT is cleared, changing the output of the equality matching function br_port_group_equal().
Once the bit is cleared, br_port_group_equal() returns true based solely on the match of the bridge port pointer, ignoring unique source MAC addresses. Consequently, the multicast database accumulates multiple distinct entries pointing to the same logical port. These entries are treated as identical under the newly modified evaluation logic, which populates the mp->ports list with duplicate matches.
When a fast-leave request is triggered, br_multicast_leave_group() iterates through the mp->ports list using a double-pointer iterator pp initialized to the address of mp->ports. The loop locates the matching port group, marks it with the MDB_PG_FLAGS_FAST_LEAVE flag, and deletes it using br_multicast_del_pg(). Because the loop lacks a break statement following the deletion call, the iterator continues execution, advancing to the increment statement pp = &p->next and dereferencing the next pointer of the recently freed p structure.
The vulnerable code path is located in net/bridge/br_multicast.c. Analysis of the loop structure demonstrates how the iterator pp becomes a dangling pointer after the deletion operation.
// Vulnerable loop representation in net/bridge/br_multicast.c
for (pp = &mp->ports;
(p = mlock_dereference(*pp, brmctx->br)) != NULL;
pp = &p->next) {
if (br_port_group_equal(p, port, src)) {
p->flags |= MDB_PG_FLAGS_FAST_LEAVE;
br_multicast_del_pg(mp, p, pp); // Deletes and immediately queues 'p' to be freed
// Missing break statement allows the loop to proceed
}
goto out;
}The function br_multicast_del_pg() unlinks p from the list and schedules it for deallocation via the garbage collector. Because there is no termination logic, the loop returns to the third statement in the for loop declaration: pp = &p->next. At this execution point, p is a freed block of memory, resulting in an immediate invalid read when attempting to access p->next.
The official fix implements a single break; statement directly following the deletion function call. This ensures that the loop terminates immediately after unlinking the target, avoiding the evaluation of the increment expression.
// Patched loop representation in net/bridge/br_multicast.c
for (pp = &mp->ports;
(p = mlock_dereference(*pp, brmctx->br)) != NULL;
pp = &p->next) {
if (br_port_group_equal(p, port, src)) {
p->flags |= MDB_PG_FLAGS_FAST_LEAVE;
br_multicast_del_pg(mp, p, pp);
break; // Added by fix commit to terminate traversal
}
goto out;
}Exploiting this defect requires a multi-stage configuration sequence on the target bridge interface. First, the target system must have bridge multicast snooping enabled and the multicast-to-unicast feature toggled from enabled to disabled on a bridge port. This populates the database with multiple distinct entries that match the same physical port configuration.
Second, the attacker transmits a specially crafted IGMP (for IPv4) or MLD (for IPv6) Leave Group network packet over the bridged segment. Upon receipt, the network stack forwards the packet to br_multicast_leave_group() to handle the fast-leave request. The execution flow enters the vulnerable loop and processes the match.
When the loop traverses the duplicate entries, the first match triggers br_multicast_del_pg(), which frees the memory backing p. The loop then attempts to read p->next from the freed memory area. In standard environments, this results in a page fault and kernel panic. In advanced exploitation scenarios, local attackers may use slab allocation spraying techniques to overwrite the deallocated memory block prior to the dereference, redirecting kernel execution flow.
The security impact of CVE-2026-74480 is critical, as reflected by its CVSS score of 9.8. The vulnerability is accessible over the network without authentication, requiring no user interaction. It presents a low attack complexity because standard network control packets are sufficient to trigger the code path.
The most immediate risk is a complete loss of availability. A crash of the Layer 2 bridging driver causes the entire operating system to panic, shutting down network gateways, bare-metal servers, or virtualized hosts. In multi-tenant cloud environments, a crash of the hypervisor's bridging driver results in a Denial of Service for all hosted virtual machines and containers.
If the memory space can be reliably controlled and manipulated prior to the dereference, privilege escalation or escape from containerized namespaces is theoretically possible. No public exploit payloads or active campaigns have been reported in the wild, and the current exploit maturity is classified as none.
The permanent resolution for CVE-2026-74480 is updating the host operating system's kernel to a version containing the official patch. Long-Term Support (LTS) kernel branches have been patched upstream. Systems must be updated to version 5.10.265, 5.15.216, 6.1.183, 6.6.151, 6.12.103, 6.18.44, 7.1.8, or 7.2 or newer.
For systems where immediate kernel updates and reboots are not possible, administrators can apply workarounds to reduce exposure. Disabling multicast snooping on active bridge interfaces completely bypasses the vulnerable execution path. This can be configured dynamically using the following command:
ip link set dev <bridge_name> type bridge mcast_snooping 0Additionally, administrators can use packet filtering tools such as ebtables or nftables to block incoming IGMP or MLD Leave Group query packets from untrusted sources. To prevent the initial configuration prerequisite, avoid dynamically toggling the multicast-to-unicast configuration on active bridge ports.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H| Product | Affected Versions | Fixed Version |
|---|---|---|
Linux Kernel Linux Foundation | >= 4.11, < 5.10.265 | 5.10.265 |
Linux Kernel Linux Foundation | >= 5.11, < 5.15.216 | 5.15.216 |
Linux Kernel Linux Foundation | >= 5.16, < 6.1.183 | 6.1.183 |
Linux Kernel Linux Foundation | >= 6.2, < 6.6.151 | 6.6.151 |
Linux Kernel Linux Foundation | >= 6.7, < 6.12.103 | 6.12.103 |
Linux Kernel Linux Foundation | >= 6.13, < 6.18.44 | 6.18.44 |
Linux Kernel Linux Foundation | >= 6.19, < 7.1.8 | 7.1.8 |
Linux Kernel Linux Foundation | >= 7.1.9, < 7.2 | 7.2 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-416 |
| Attack Vector | Network |
| CVSS v3.1 | 9.8 (Critical) |
| EPSS Score | 0.00755 |
| Impact | Denial of Service (DoS) / Remote Code Execution (RCE) |
| Exploit Status | None |
| KEV Status | Not Listed |
The product references memory after it has been freed, which can lead to a crash, unexpected behavior, or execution of arbitrary code.
CVE-2026-16454 is an object-level authorization bypass vulnerability (CWE-284, CWE-862) in Eclipse hawkBit versions 1.0.3 and prior. The flaw exists within the Direct Device Integration (DDI) REST controller (hawkbit-ddi-resource), where endpoints responsible for enumerating software module metadata and serving firmware binaries fail to verify whether the requested software module is assigned to the authenticated device. Consequently, any device with valid credentials (such as a TargetToken or GatewayToken) can enumerate software module identifiers and download arbitrary firmware artifacts across the entire tenant namespace.
CVE-2026-62284 (GHSA-5w5g-j6hw-6p8f) is a code injection and server-side request forgery vulnerability in the console-proxy component of the OSAC Operator. The RemoteConfigResolver parses Kubernetes Secrets containing kubeconfig files via clientcmd.RESTConfigFromKubeConfig without sanitizing execution-related fields. An attacker with RBAC permissions to create or modify labeled Secrets in monitored namespaces can supply a malicious exec credential plugin, resulting in arbitrary command execution within the console-proxy pod.
CVE-2026-62361 (GHSA-xgjr-7j9q-2h4r) is an authenticated SQL injection and authorization bypass vulnerability in listmonk, an open-source, self-hosted newsletter and mailing list manager written in Go. In versions prior to 6.2.0, the subscriber export endpoint (GET /api/subscribers/export) directly interpolates user-supplied SQL filter expressions into a PostgreSQL query without invoking the table allowlist validation function (validateQueryTables). Consequently, authenticated users possessing the subscribers:sql_query and subscribers:get_all permissions can bypass relational access controls, execute arbitrary subqueries against restricted tables such as users and settings, and modify database state via writable Common Table Expressions (CTEs).
CVE-2026-28385 (GHSA-3gq2-x4qg-p4g6) is a Server-Side Request Forgery (SSRF) vulnerability in Canonical LXD versions 4.12 through 6.9. An authenticated user possessing the can_create_images entitlement can force the LXD daemon to execute arbitrary outbound HTTP and HTTPS requests via the /1.0/images API endpoint. Due to the absence of egress destination validation, an attacker can probe host loopback services, RFC 1918 private network segments, and cloud Instance Metadata Services (IMDS) from the network position of the privileged LXD daemon.
Canonical LXD and LXC Incus contain an arbitrary file write vulnerability (CWE-73 / CWE-59) in the `/1.0/instances/<name>/exec` REST API endpoint. When an instance is unpacked from an image archive, top-level symbolic links are extracted directly onto the host filesystem within the instance storage directory. If a crafted image includes a symbolic link named `exec-output` pointing to an arbitrary host path, invoking the execution endpoint with `record-output: true` causes the privileged host daemon to follow the symlink and write command output files directly to the target host directory. An authenticated attacker with permissions to import images and execute commands can exploit this flaw to write controlled content to sensitive host directories such as `/etc/cron.d`, resulting in arbitrary code execution on the host as `root`.
CVE-2026-48749 (tracked as GHSA-vghh-5rfx-xhq8 for LXD and GHSA-2q3f-q5pq-g8wv for Incus) is a critical container escape vulnerability in the Canonical LXD and Linux Containers Incus system container managers. By importing a specially crafted container image archive containing duplicate tar member headers, an authenticated attacker can replace the instance rootfs directory with a symbolic link pointing to the underlying host root filesystem. When performing file operations on a stopped container, the privileged forkfile helper binary resolves the symbolic link without confinement and chroots directly into the host filesystem, granting arbitrary root-level file read and write access.