Cloudanix VulnDB

CVE-2026-45970

High · 7.8

CVSS

7.8

EPSS

0.1%

Published

May 27, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

Some Linux systems using bonded network cards can crash or become unstable when their network connection is rapidly restarted while handling local network traffic.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Moderate
Impact
Privilege Gain
Component
OS kernel
Class
Use After Free
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

This vulnerability is a race-condition use-after-free in the Linux kernel bonding driver when Adaptive Load Balancing/Adaptive Receive Load Balancing is in use. During bond interface teardown, the driver can free the receive load-balancing ARP hash table while the receive path is still processing ARP traffic through rlb_arp_recv(). A concurrent receive handler can then dereference freed or invalid memory, causing a kernel fault and potentially enabling broader kernel memory corruption. Because the flaw occurs in kernel context, successful exploitation could result in denial of service through a kernel crash and, depending on exploitability on a given kernel build and hardening configuration, possible local privilege escalation or compromise of kernel memory integrity.

Why it matters to the business

Systems using Linux bonding in ALB/TLB-style configurations may be vulnerable to crashes during interface state changes while ARP traffic is received. The most likely operational impact is unexpected host outage, loss of network connectivity, failover instability, and service disruption on servers that rely on bonded interfaces for availability. Although current public exploit maturity is listed as none and EPSS is low, the CVSS score reflects high potential impact because kernel memory corruption can affect the confidentiality, integrity, and availability of the entire host.

How an attack unfolds

An attacker needs local access or another path to influence network interface state changes, typically requiring privileges capable of changing link state or triggering bond reconfiguration. The vulnerable condition occurs when a bonded interface using receive load balancing is repeatedly brought up and down while ARP packets are being received. During teardown, rlb_deinitialize() frees bonding receive-balancing state, but rlb_arp_recv() may still be executing in the packet receive path. If the timing aligns, the receive handler accesses freed state, producing a use-after-free condition in kernel context. In practical terms, exploitation is most straightforward as a local denial-of-service attack against a host with vulnerable bonding configuration; more advanced exploitation would attempt to shape heap state and timing to convert the use-after-free into controlled kernel memory corruption.

How to fix it

Upgrade to a Linux kernel package from the relevant distribution or vendor that includes the bonding fix adding synchronization after clearing recv_probe and before freeing ALB/RLB receive state. No exact fixed package versions were provided in the input, so use vendor advisories and kernel changelogs to confirm inclusion of the fix for CVE-2026-45970 or the corresponding bonding ALB/RLB use-after-free patch. Where immediate patching is not possible, reduce exposure by avoiding balance-alb configurations on vulnerable kernels, disabling unused bonding configurations, limiting who can change network interface state, restricting CAP_NET_ADMIN access in containers and local accounts, and avoiding automated workflows that rapidly flap bonded interfaces. Consider scheduling maintenance because kernel updates generally require rebooting into the fixed kernel.

How to confirm the fix worked

Confirm the running kernel version is the vendor-fixed version, not merely that the package is installed. Validate with uname -r, package manager inventory, and the distribution advisory for the installed kernel stream. Check whether the bonding module is loaded and whether any active bond uses ALB/RLB behavior by inspecting /proc/net/bonding/* and looking for bonding mode values such as balance-alb. After remediation, verify that the host has rebooted into the patched kernel and that controlled bond up/down testing under ARP traffic no longer produces kernel oops, KASAN, or rlb_arp_recv traces. For mitigations, confirm that vulnerable bond modes are not configured and that untrusted users or containers do not have CAP_NET_ADMIN or equivalent permissions.

Typical attack path

  1. Identify a Linux system running a vulnerable kernel with the bonding module enabled.
  2. Confirm the system uses bonding mode involving ALB/RLB behavior, such as balance-alb.
  3. Obtain local privileges sufficient to change bond interface state or trigger network reconfiguration events.
  4. Generate or rely on incoming ARP traffic while repeatedly bringing the bond interface up and down.
  5. Trigger the race between rlb_arp_recv() in the receive path and rlb_deinitialize() during bond teardown.
  6. Cause a kernel oops, panic, loss of network connectivity, or potentially kernel memory corruption.

How to detect it

Look for evidence of kernel crashes or warnings involving the bonding driver, especially during bond interface flapping or ARP activity. Primary log sources include kernel ring buffer output, system journal, /var/log/kern.log, /var/log/messages, /var/log/syslog, crash dump summaries, kdump/vmcore metadata, audit logs for network administration commands, and EDR telemetry showing ip or network-management tools changing bond state. Search for call traces mentioning rlb_arp_recv, bond_handle_frame, rlb_deinitialize, bond_alb_deinitialize, KASAN null pointer dereference, use-after-free, or general protection fault. Correlate those events with interface state changes such as ip link set bond interfaces up or down, NetworkManager/systemd-networkd activity, ifup/ifdown events, and bursts of ARP traffic. Existing exploitation is most likely to appear as repeated host crashes, kernel oops events, or network interface resets rather than a durable file-based artifact. If a crash dump is available, inspect the stack trace for rlb_arp_recv and bonding receive-path functions.

  • rlb_arp_recv
  • bond_handle_frame
  • rlb_deinitialize
  • bond_alb_deinitialize
  • bond_alb_initialize
  • KASAN: null-ptr-deref
  • KASAN: use-after-free
  • Oops: general protection fault
  • RIP: 0010:rlb_arp_recv
  • __pfx_rlb_arp_recv
  • process_backlog
  • net_rx_action
  • bonding: alb
  • /proc/net/bonding/
  • Bonding Mode: adaptive load balancing
  • Bonding Mode: balance-alb
  • ip link set bond0 up
  • ip link set bond0 down
  • ifup bond0
  • ifdown bond0

What your security team should do

  • Prioritize patching Linux servers that use bonded interfaces, especially those configured for balance-alb or receive load balancing.
  • Inventory systems with the bonding module loaded and review /proc/net/bonding/* for vulnerable bonding modes.
  • Restrict CAP_NET_ADMIN and other privileges that allow local users, containers, or automation to bring bond interfaces up or down.
  • Monitor kernel logs for rlb_arp_recv, bonding, KASAN, general protection fault, or kernel oops messages until patched.
  • If patching is delayed, migrate affected bonds away from ALB/RLB modes or disable unnecessary bonded interfaces.
  • Review network automation and failover scripts for rapid bond up/down cycles that could accidentally trigger the race.
  • Because the vulnerability is not currently in CISA KEV and EPSS is low, prioritize based on exposure: externally critical hosts, virtualization/container platforms, and systems with multi-user local access should be handled first.

The record

In the Linux kernel, the following vulnerability has been resolved: bonding: alb: fix UAF in rlb_arp_recv during bond up/down The ALB RX path may access rx_hashtbl concurrently with bond teardown. During rapid bond up/down cycles, rlb_deinitialize() frees rx_hashtbl while RX handlers are still running, leading to a null pointer dereference detected by KASAN. However, the root cause is that rlb_arp_recv() can still be accessed after setting recv_probe to NULL, which is actually a use-after-free (UAF) issue. That is the reason for using the referenced commit in the Fixes tag. [ 214.174138] Oops: general protection fault, probably for non-canonical address 0xdffffc000000001d: 0000 [#1] SMP KASAN PTI [ 214.186478] KASAN: null-ptr-deref in range [0x00000000000000e8-0x00000000000000ef] [ 214.194933] CPU: 30 UID: 0 PID: 2375 Comm: ping Kdump: loaded Not tainted 6.19.0-rc8+ #2 PREEMPT(voluntary) [ 214.205907] Hardware name: Dell Inc. PowerEdge R730/0WCJNT, BIOS 2.14.0 01/14/2022 [ 214.214357] RIP: 0010:rlb_arp_recv+0x505/0xab0 [bonding] [ 214.220320] Code: 0f 85 2b 05 00 00 48 b8 00 00 00 00 00 fc ff df 40 0f b6 ed 48 c1 e5 06 49 03 ad 78 01 00 00 48 8d 7d 28 48 89 fa 48 c1 ea 03 <0f> b6 04 02 84 c0 74 06 0f 8e 12 05 00 00 80 7d 28 00 0f 84 8c 00 [ 214.241280] RSP: 0018:ffffc900073d8870 EFLAGS: 00010206 [ 214.247116] RAX: dffffc0000000000 RBX: ffff888168556822 RCX: ffff88816855681e [ 214.255082] RDX: 000000000000001d RSI: dffffc0000000000 RDI: 00000000000000e8 [ 214.263048] RBP: 00000000000000c0 R08: 0000000000000002 R09: ffffed11192021c8 [ 214.271013] R10: ffff8888c9010e43 R11: 0000000000000001 R12: 1ffff92000e7b119 [ 214.278978] R13: ffff8888c9010e00 R14: ffff888168556822 R15: ffff888168556810 [ 214.286943] FS: 00007f85d2d9cb80(0000) GS:ffff88886ccb3000(0000) knlGS:0000000000000000 [ 214.295966] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 214.302380] CR2: 00007f0d047b5e34 CR3: 00000008a1c2e002 CR4: 00000000001726f0 [ 214.310347] Call Trace: [ 214.313070] <IRQ> [ 214.315318] ? __pfx_rlb_arp_recv+0x10/0x10 [bonding] [ 214.320975] bond_handle_frame+0x166/0xb60 [bonding] [ 214.326537] ? __pfx_bond_handle_frame+0x10/0x10 [bonding] [ 214.332680] __netif_receive_skb_core.constprop.0+0x576/0x2710 [ 214.339199] ? __pfx_arp_process+0x10/0x10 [ 214.343775] ? sched_balance_find_src_group+0x98/0x630 [ 214.349513] ? __pfx___netif_receive_skb_core.constprop.0+0x10/0x10 [ 214.356513] ? arp_rcv+0x307/0x690 [ 214.360311] ? __pfx_arp_rcv+0x10/0x10 [ 214.364499] ? __lock_acquire+0x58c/0xbd0 [ 214.368975] __netif_receive_skb_one_core+0xae/0x1b0 [ 214.374518] ? __pfx___netif_receive_skb_one_core+0x10/0x10 [ 214.380743] ? lock_acquire+0x10b/0x140 [ 214.385026] process_backlog+0x3f1/0x13a0 [ 214.389502] ? process_backlog+0x3aa/0x13a0 [ 214.394174] __napi_poll.constprop.0+0x9f/0x370 [ 214.399233] net_rx_action+0x8c1/0xe60 [ 214.403423] ? __pfx_net_rx_action+0x10/0x10 [ 214.408193] ? lock_acquire.part.0+0xbd/0x260 [ 214.413058] ? sched_clock_cpu+0x6c/0x540 [ 214.417540] ? mark_held_locks+0x40/0x70 [ 214.421920] handle_softirqs+0x1fd/0x860 [ 214.426302] ? __pfx_handle_softirqs+0x10/0x10 [ 214.431264] ? __neigh_event_send+0x2d6/0xf50 [ 214.436131] do_softirq+0xb1/0xf0 [ 214.439830] </IRQ> The issue is reproducible by repeatedly running ip link set bond0 up/down while receiving ARP messages, where rlb_arp_recv() can race with rlb_deinitialize() and dereference a freed rx_hashtbl entry. Fix this by setting recv_probe to NULL and then calling synchronize_net() to wait for any concurrent RX processing to finish. This ensures that no RX handler can access rx_hashtbl after it is freed in bond_alb_deinitialize().

Affected packages

Ecosystem Package Introduced Fixed
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-azure 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.35.1.160000.2.16
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.35.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.35.1

Related vulnerabilities