HIGH 7.8

CVE-2026-52975: Linux Kernel 802.3ad Bonding RCU Data-Race Vulnerability

A race condition exists in the Linux kernel's bonding driver (802.3ad mode) where two parts of the code access the same internal data structure without proper synchronization. One thread updates a pointer to an aggregator object while another thread reads it, potentially causing a crash or memory corruption. The vulnerability stems from missing RCU (Read-Copy-Update) synchronization primitives that the kernel uses to safely share data between concurrent operations.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.8 HIGH · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weaknesses (CWE)
Affected products
2 configuration(s)
Published / Modified
2026-06-24 / 2026-07-14

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: bonding: 3ad: implement proper RCU rules for port->aggregator syzbot found a data-race in bond_3ad_get_active_agg_info / bond_3ad_state_machine_handler [1] which hints at lack of proper RCU implementation. Add __rcu qualifier to port->aggregator, and add proper RCU API. [1] BUG: KCSAN: data-race in bond_3ad_get_active_agg_info / bond_3ad_state_machine_handler write to 0xffff88813cf5c4b0 of 8 bytes by task 36 on cpu 0: ad_port_selection_logic drivers/net/bonding/bond_3ad.c:1659 [inline] bond_3ad_state_machine_handler+0x9d5/0x2d60 drivers/net/bonding/bond_3ad.c:2569 process_one_work kernel/workqueue.c:3302 [inline] process_scheduled_works+0x4f0/0x9c0 kernel/workqueue.c:3385 worker_thread+0x58a/0x780 kernel/workqueue.c:3466 kthread+0x22a/0x280 kernel/kthread.c:436 ret_from_fork+0x146/0x330 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 read to 0xffff88813cf5c4b0 of 8 bytes by task 22063 on cpu 1: __bond_3ad_get_active_agg_info drivers/net/bonding/bond_3ad.c:2858 [inline] bond_3ad_get_active_agg_info+0x8c/0x230 drivers/net/bonding/bond_3ad.c:2881 bond_fill_info+0xe0f/0x10f0 drivers/net/bonding/bond_netlink.c:853 rtnl_link_info_fill net/core/rtnetlink.c:906 [inline] rtnl_link_fill+0x1d7/0x4e0 net/core/rtnetlink.c:927 rtnl_fill_ifinfo+0xf8e/0x1380 net/core/rtnetlink.c:2168 rtmsg_ifinfo_build_skb+0x11c/0x1b0 net/core/rtnetlink.c:4453 rtmsg_ifinfo_event net/core/rtnetlink.c:4486 [inline] rtmsg_ifinfo+0x6d/0x110 net/core/rtnetlink.c:4495 __dev_notify_flags+0x76/0x390 net/core/dev.c:9790 netif_change_flags+0xac/0xd0 net/core/dev.c:9823 do_setlink+0x905/0x2950 net/core/rtnetlink.c:3180 rtnl_group_changelink net/core/rtnetlink.c:3813 [inline] __rtnl_newlink net/core/rtnetlink.c:3981 [inline] rtnl_newlink+0xf55/0x1400 net/core/rtnetlink.c:4109 rtnetlink_rcv_msg+0x64b/0x720 net/core/rtnetlink.c:6995 netlink_rcv_skb+0x123/0x220 net/netlink/af_netlink.c:2550 rtnetlink_rcv+0x1c/0x30 net/core/rtnetlink.c:7022 netlink_unicast_kernel net/netlink/af_netlink.c:1318 [inline] netlink_unicast+0x5a8/0x680 net/netlink/af_netlink.c:1344 netlink_sendmsg+0x5c8/0x6f0 net/netlink/af_netlink.c:1894 sock_sendmsg_nosec net/socket.c:787 [inline] __sock_sendmsg net/socket.c:802 [inline] ____sys_sendmsg+0x563/0x5b0 net/socket.c:2698 ___sys_sendmsg+0x195/0x1e0 net/socket.c:2752 __sys_sendmsg net/socket.c:2784 [inline] __do_sys_sendmsg net/socket.c:2789 [inline] __se_sys_sendmsg net/socket.c:2787 [inline] __x64_sys_sendmsg+0xd4/0x160 net/socket.c:2787 x64_sys_call+0x194c/0x3020 arch/x86/include/generated/asm/syscalls_64.h:47 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x12c/0x3b0 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f value changed: 0x0000000000000000 -> 0xffff88813cf5c400 Reported by Kernel Concurrency Sanitizer on: CPU: 1 UID: 0 PID: 22063 Comm: syz.0.31122 Tainted: G W syzkaller #0 PREEMPT(full) Tainted: [W]=WARN Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/18/2026

6 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-52975 is a data-race vulnerability in the Linux kernel's 802.3ad bonding implementation, specifically in the handling of the port->aggregator pointer. The KCSAN (Kernel Concurrency Sanitizer) detector identified unsynchronized concurrent access: ad_port_selection_logic() writes to the aggregator pointer while bond_3ad_get_active_agg_info() reads it without RCU protections. The resolution adds __rcu qualifiers to the pointer and implements proper RCU read-side critical sections to enforce memory ordering and prevent compiler/CPU optimizations from causing observable memory corruption or use-after-free conditions.

Business impact

Systems running affected Linux kernels with active 802.3ad bonded network interfaces face potential kernel crashes or memory corruption triggered by concurrent network configuration changes. This could lead to unplanned downtime for services relying on bonded network links, particularly in virtualized or high-availability deployments. The local privilege requirement means unprivileged users cannot directly trigger this, but administrators performing routine network reconfigurations or automated orchestration tools making network changes could inadvertently trigger the race condition.

Affected systems

The vulnerability affects the Linux kernel across all versions prior to the patch. It is specific to systems using 802.3ad (LACP) bonding mode for network interfaces. Impact is limited to systems where: (1) kernel bonding driver is compiled and active, (2) one or more bonded interfaces are configured in 802.3ad mode, and (3) concurrent access patterns occur between state machine updates and network attribute queries (e.g., via netlink).

Exploitability

Exploitability is moderate. The vulnerability requires local access and the ability to trigger concurrent operations on bonded interfaces—either through direct system calls (netlink socket manipulation) or automated network configuration. While not remotely exploitable, the race condition can be reliably reproduced in test environments with concurrent workloads. No known public exploit code exists at publication, and the defect manifests as a crash rather than providing a direct privilege escalation path, though memory corruption could theoretically be weaponized in advanced scenarios.

Remediation

Apply kernel patches that implement RCU synchronization for the port->aggregator pointer. The fix involves adding __rcu qualifiers to the aggregator pointer declaration and wrapping all reads with rcu_dereference() and all updates with proper RCU assignment macros. Verify the patch version against your Linux distribution's kernel security advisories. Alternatively, systems unable to patch immediately should minimize concurrent network configuration changes on bonded interfaces or temporarily disable 802.3ad mode if operationally feasible.

Patch guidance

Obtain the patched kernel version from your Linux distribution (Red Hat, Debian, Ubuntu, etc.) or kernel.org. The patch modifies drivers/net/bonding/bond_3ad.c to enforce RCU rules. Verify the patch against the vendor's security advisory to confirm the specific version number for your distribution. After patching, reboot the system or use live kernel patching if available. Test bonded interface failover and configuration queries post-patch to ensure normal operation.

Detection guidance

Monitor kernel logs (dmesg, systemd journal) for KCSAN warnings or use CONFIG_KCSAN=y kernels in test environments to detect the race condition. Observe for unexpected kernel crashes or warnings mentioning 'bond_3ad' or 'bond_3ad_state_machine_handler'. In production, track system stability metrics around network configuration changes on bonded interfaces. Network telemetry showing dropped traffic during bonded interface reconfigurations may indicate a related race condition triggering.

Why prioritize this

This issue merits prompt but not critical prioritization. The CVSS score of 7.8 (HIGH) reflects local access requirements and high impact (crash/corruption). Prioritize patches for production systems running 802.3ad bonding in active-active or active-passive failover scenarios where network reconfigurations are frequent. Non-bonded systems or those using other bonding modes are unaffected. Organizations with automated network orchestration should patch sooner due to higher concurrency likelihood.

Risk score, explained

The CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H score of 7.8 reflects: Attack Vector Local (system access required), Attack Complexity Low (race condition is reproducible), Privileges Required Low (any local user can trigger via netlink), no User Interaction needed, Scope Unchanged, and High impact on Confidentiality, Integrity, and Availability (kernel crash or memory corruption). The score appropriately captures the severity while accounting for the local-only attack surface.

Frequently asked questions

Will this crash my system immediately?

Not necessarily. The vulnerability is a race condition that manifests when concurrent operations align—one thread updating bonded interface aggregator state while another queries it. Systems with static network configurations may never trigger it, while those with frequent bonded interface reconfigurations are at higher risk.

Do systems without 802.3ad bonding need to patch?

No. The vulnerability is specific to 802.3ad (LACP) bonding mode. Systems using other bonding modes (round-robin, active-backup, balance-alb, etc.) or no bonding at all are unaffected.

Can this be exploited remotely?

No. CVE-2026-52975 requires local system access and the ability to modify network interface configurations. Remote attackers cannot trigger this vulnerability directly, making it primarily a risk for local privilege escalation or denial of service scenarios on multi-user or container-based systems.

What is RCU and why does this fix require it?

RCU (Read-Copy-Update) is a Linux kernel synchronization mechanism that allows readers to access data without locks while writers update safely. It prevents CPU or compiler optimizations from causing stale pointer dereferences. The fix adds RCU annotations (rcu_dereference, rcu_assign_pointer) to ensure the kernel respects the intended memory ordering when reading or writing the aggregator pointer.

This analysis is provided for informational purposes. CVSS score, affected versions, patch availability, and KEV status are sourced from official CVE and vendor advisories. Readers should consult their Linux distribution's security advisories for specific patch version numbers and deployment guidance. Testing patches in non-production environments before deployment is strongly recommended. This analysis does not constitute security advice; organizations should conduct their own risk assessments based on their specific infrastructure and threat models. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).