CVE-2026-72493

Summary

In the Linux kernel, the following vulnerability has been resolved:

net: serialize netif_running() check in enqueue_to_backlog()

Syzbot reported a KASAN slab-use-after-free in fib_rules_lookup().

The root cause is a race condition where packets can escape the backlog flushing during device unregistration (e.g., during netns exit).

Commit e9e4dd3267d0 ("net: do not process device backlog during unregistration") introduced a lockless netif_running() check in enqueue_to_backlog() to prevent queuing packets to an unregistering device.

However, this creates a TOCTOU race window.

A lockless transmitter (like veth_xmit) can pass the check before dev_close() clears IFF_UP. If the transmitter is then delayed, flush_all_backlogs() can run and finish before the transmitter grabs the backlog lock and queues the packet. The packet then escapes the flush and triggers UAF later when processed.

Fix this by moving the netif_running() check inside the backlog lock. This serializes the check with the flush work (which also grabs the lock). We then either queue the packet before the flush runs (so it gets flushed), or check netif_running() after the flush/close completes (so it gets dropped).

Affected Software

VendorProductVersion RangeStatus
LinuxLinuxe9e4dd3267d0c5234c5c0f47440456b10875dec9 < 2fface6e0bbd6314d1d9d071abf2c4d67548511caffected
LinuxLinuxe9e4dd3267d0c5234c5c0f47440456b10875dec9 < 46762cefe7f4e5bffc1eb467810a7bbb02e461d7affected
LinuxLinux78b6803a1961369d0b8350ff1f99b7375bbd7a8faffected
LinuxLinuxb5d73d9cdd6be22795499890ea928a6f57ef829caffected
LinuxLinuxf6533fed1bfa842e391ee50f9a9c5e963c71e579affected
LinuxLinux2095ab2456da766174cda8bc105d7a7b1bc70e16affected
LinuxLinuxf1fdb184aefa8447560e3ea0e605171592ffee41affected
LinuxLinuxf75c8a3015422128ca150e81c730bc2a471b5f4aaffected
LinuxLinux3.2.71 < 3.3affected
LinuxLinux3.4.111 < 3.5affected
LinuxLinux3.12.48 < 3.13affected
LinuxLinux3.14.54 < 3.15affected
LinuxLinux3.18.22 < 3.19affected
LinuxLinux4.1.9 < 4.2affected
LinuxLinux4.2affected
LinuxLinux0 < 4.2unaffected
LinuxLinux7.1.5 <= 7.1.*unaffected
LinuxLinux7.2 <= *unaffected

Weaknesses

References