Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-43234

CVE-2026-43234: Linux Kernel Privilege Escalation Flaw

CVE-2026-43234 is a privilege escalation vulnerability in the Linux kernel team driver that causes netdevice reference counting issues during slave unregistration. This article covers technical details, affected versions, impact, and mitigation.

Published:

CVE-2026-43234 Overview

CVE-2026-43234 is a Linux kernel vulnerability in the team networking driver. The flaw causes a netdevice reference count leak when a slave device is unregistered while attached to a team master. The kernel emits a NETDEV_CHANGEMTU notification during team_port_del(), which triggers inetdev_init() to acquire an additional netdev reference that is never released. The result is a stuck unregister_netdevice: waiting for netdevsim0 to become free condition reported by syzbot. The same class of bug was previously fixed in the bonding driver via commit f51048c3e07b. The team driver fix mirrors that approach by avoiding the MTU change notification path during slave teardown.

Critical Impact

A local user with CAP_NET_ADMIN can leak netdevice references and render the kernel unable to release network namespaces, leading to a persistent denial-of-service condition until reboot.

Affected Products

  • Linux kernel team driver (drivers/net/team/team_core.c)
  • Linux kernel networking core (net/core/dev.c, net/ipv4/devinet.c)
  • Linux distributions shipping the affected kernel versions prior to the referenced stable patches

Discovery Timeline

  • 2026-05-06 - CVE-2026-43234 published to NVD
  • 2026-05-06 - Last updated in NVD database

Technical Details for CVE-2026-43234

Vulnerability Analysis

The defect resides in team_port_del() in drivers/net/team/team_core.c. When a slave network device is removed from a team master, the driver calls dev_set_mtu() to restore the slave's original MTU. This call propagates through netif_set_mtu_ext() and invokes call_netdevice_notifiers_mtu(), dispatching a NETDEV_CHANGEMTU event.

The IPv4 notifier inetdev_event() handles this event and calls inetdev_init(), which executes netdev_hold() to take a tracked reference on the netdevice. Because the slave is in the middle of being unregistered, the matching release path never executes. The reference tracker logs netdev@... has 1/2 users, and unregister_netdevice blocks indefinitely.

Ido Schimmel provided a minimal reproducer using ip link add ... type team, attaching a dummy slave, moving it into a network namespace, and deleting it. The bonding driver resolved the equivalent issue in commit f51048c3e07b, and the team fix applies the same logic.

Root Cause

The root cause is an incorrect notifier emission ordering during slave unregistration. The team driver issues an MTU restoration on a netdevice that is already being torn down, creating a race where IPv4 initialization logic increments the reference count without a counterpart decrement. This is a kernel-level resource lifecycle bug rather than a memory corruption flaw.

Attack Vector

The issue is reachable by any local process holding CAP_NET_ADMIN in a user namespace. The reproducer requires creating a team interface, enslaving a device, moving the slave to another namespace, and deleting it. Repeated triggering exhausts kernel resources and prevents namespace cleanup, producing a persistent denial of service.

The vulnerability mechanism is documented in the upstream patch series. See the Kernel Git Commit #bce4272 for the corrective change.

Detection Methods for CVE-2026-43234

Indicators of Compromise

  • Kernel log messages containing unregister_netdevice: waiting for ... to become free. Usage count = repeating at 10-second intervals.
  • ref_tracker warnings referencing __netdev_tracker_alloc, netdev_hold, and inetdev_init in the call stack.
  • Network namespaces that fail to terminate after the last process exits, accumulating in /proc/net.

Detection Strategies

  • Monitor dmesg and /var/log/kern.log for the unregister_netdevice waiting pattern, which is a high-fidelity signal of the leak.
  • Track the count of network namespaces over time using lsns -t net and alert on monotonic growth that does not match workload activity.
  • Audit auditd records for repeated team and bonding interface manipulation by non-root processes operating in user namespaces.

Monitoring Recommendations

  • Forward kernel ring buffer events to a centralized logging pipeline and create alerts for ref_tracker and unregister_netdevice strings.
  • Track per-host counts of leaked netdevices using ip -s link snapshots compared against expected interface inventory.
  • Correlate netlink RTM_NEWLINK and RTM_DELLINK activity with the appearance of namespace teardown stalls.

How to Mitigate CVE-2026-43234

Immediate Actions Required

  • Apply the upstream stable kernel updates referenced in the patch commits as soon as your distribution publishes them.
  • Restrict creation of team interfaces and CAP_NET_ADMIN privileges within unprivileged user namespaces where feasible.
  • Reboot affected hosts that already exhibit the unregister_netdevice waiting condition, since leaked references cannot be reclaimed at runtime.

Patch Information

The fix is delivered through three upstream commits: Kernel Git Commit #5268892, Kernel Git Commit #bb4c698, and Kernel Git Commit #bce4272. The fix avoids emitting the NETDEV_CHANGEMTU event during slave unregistration, mirroring the approach taken for the bonding driver in commit f51048c3e07b. Backports also incorporate commits ad7c7b2172c3 and 303a8487a657 for correct netdev instance lock handling.

Workarounds

  • Disable or unload the team kernel module on systems that do not require team-based link aggregation: modprobe -r team.
  • Set kernel.unprivileged_userns_clone=0 to block unprivileged namespace creation paths used to reach the vulnerable code.
  • Avoid moving team slave devices between network namespaces in operational tooling until the patch is deployed.
bash
# Configuration example
# Block unprivileged user namespaces
sysctl -w kernel.unprivileged_userns_clone=0

# Prevent the team module from loading at boot
echo 'install team /bin/true' | sudo tee /etc/modprobe.d/disable-team.conf

# Verify the module is not loaded
lsmod | grep -E '^team'

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.