CVE-2026-72323 in Linuxinfo

Summary

by MITRE • 08/15/2026

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

ipv4: igmp: Fix potential UAF in igmp_gq_start_timer()

A race condition exists between device teardown (inetdev_destroy) and incoming IGMP query processing (igmp_rcv), leading to a Use-After-Free in the IGMP timer callback.

During device destruction, inetdev_destroy() drops the primary reference to in_device, which can drop its refcount to 0. The actual freeing of in_device memory is deferred via RCU (using call_rcu()).

Concurrently, igmp_rcv() runs under RCU read lock and obtains the in_device pointer. Because the memory is RCU-protected, CPU-0 can safely dereference in_device even if its refcount has hit 0.

However, if CPU-0 calls igmp_gq_start_timer() and re-arms the timer, it attempts to acquire a reference using in_dev_hold(). This increments the refcount from 0 to 1, triggering a "refcount_t: addition on 0" warning. Since the in_device memory is still scheduled to be freed after the RCU grace period (as the free callback does not check the refcount again), the device is freed while the timer is still armed. When the timer expires, it accesses the freed memory, causing a kernel panic.

Fix this by using refcount_inc_not_zero() (via a new helper in_dev_hold_safe()) to prevent acquiring a reference if the device is already being destroyed. If the refcount is 0, we do not arm the timer.

A similar issue in IPv6 MLD is fixed in a subsequent patch.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Analysis

by VulDB Data Team • 08/15/2026

The vulnerability described represents a critical use-after-free condition in the Linux kernel's Internet Group Management Protocol implementation for ipv4 networks. This flaw exists within the IGMP timer callback mechanism and stems from improper handling of reference counting during device teardown operations. The issue manifests as a race condition between two distinct kernel threads or CPU cores that process network device destruction and incoming IGMP query processing simultaneously, creating a scenario where memory management and resource access collide in an unsafe manner.

The technical root cause involves the interaction between inetdev_destroy() function which handles device teardown and the igmp_rcv() function responsible for processing incoming IGMP queries. When a network device is being destroyed, inetdev_destroy() reduces the reference count of the in_device structure to zero and schedules its actual memory deallocation through RCU (Read-Copy-Update) mechanisms. However, during concurrent execution, igmp_rcv() may still be accessing this in_device pointer under an RCU read lock, creating a temporal gap where the memory appears valid but is already marked for destruction.

The vulnerability specifically occurs when igmp_gq_start_timer() attempts to re-arm the IGMP timer after processing a query. This function calls in_dev_hold() which increments the reference count from zero to one, triggering kernel warnings about "refcount_t: addition on 0" conditions. The critical flaw arises because the memory deallocation process continues regardless of this reference increment attempt, as the actual freeing occurs after the RCU grace period has passed. When the timer callback eventually executes and attempts to access the freed in_device structure, it results in kernel memory corruption and potential system crashes.

This vulnerability maps directly to CWE-416, which describes Use After Free conditions in software systems, and aligns with ATT&CK technique T1059.003 for kernel-level exploitation paths. The race condition scenario creates a predictable pattern where legitimate network processing operations can trigger memory corruption through improper reference counting protocols. The fix implemented addresses this by introducing a new helper function in_dev_hold_safe() that uses refcount_inc_not_zero() to prevent acquiring references to objects already marked for destruction, thereby ensuring that timers are not armed when the underlying device structure is in the process of being freed.

The mitigation strategy prevents the problematic reference increment operation by checking whether the reference count is already zero before attempting to increase it. This approach ensures that if a device is already scheduled for destruction, the timer will not be armed, eliminating the window where freed memory could be accessed through the timer callback mechanism. The solution maintains system stability while preserving legitimate network functionality and follows established kernel security practices for handling concurrent access patterns in multi-threaded environments.

The fix demonstrates proper kernel development practices for managing RCU-protected data structures and highlights the importance of careful reference counting in systems where memory management and asynchronous processing intersect. This particular vulnerability represents a common class of issues found in kernel networking code where the interaction between multiple subsystems creates complex synchronization requirements that must be carefully managed to prevent security exploits or system instability. The subsequent patch addressing similar issues in IPv6 MLD indicates this is part of a broader effort to secure network protocol implementations against race condition vulnerabilities in kernel memory management systems.

The operational impact of this vulnerability extends beyond simple denial of service scenarios, as it represents an attack surface that could potentially be exploited by malicious actors to cause system crashes or even execute arbitrary code within kernel space. Network administrators should prioritize patching affected systems, particularly those running kernel versions containing this specific race condition, as the vulnerability can be triggered through normal IGMP query processing operations without requiring special privileges or complex attack vectors. The fix ensures that all network device destruction and reconfiguration operations maintain memory safety guarantees even under concurrent access patterns typical of high-traffic networking environments.

This vulnerability type exemplifies the challenges inherent in developing secure kernel code where multiple execution paths must coordinate properly while maintaining memory safety guarantees across complex synchronization primitives. The solution demonstrates the importance of defensive programming practices in kernel development, particularly when dealing with reference counting and memory management operations that span multiple subsystems and execution contexts.

Responsible

Linux

Reservation

08/09/2026

Disclosure

08/15/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you need the next level of professionalism?

Upgrade your account now!