CVE-2026-72115 in Linuxinfo

Summary

by MITRE • 08/15/2026

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

can: bcm: track a single source interface for ANYDEV timeout/throttle ops

An ANYDEV rx op (ifindex == 0) with an active RX timeout and/or throttle timer has no defined semantics when matching frames arrive from several interfaces: bcm_rx_handler() can run concurrently for the same op on different CPUs, racing hrtimer_cancel()/ bcm_rx_starttimer() against bcm_rx_timeout_handler() and causing spurious RX_TIMEOUT notifications and last_frames corruption. The same concurrency lets throttled multiplex frames from different interfaces clobber the single rx_ifindex/rx_stamp fields shared by the op.

Add op->if_detected to track the first interface that delivers a matching frame while a timeout/throttle timer is configured, and reject frames from any other interface for that op. The claim is decided in bcm_rx_handler() before hrtimer_cancel() touches op->timer, so a rejected frame can never disturb the claimed interface's watchdog. RTR-mode ops are excluded via RX_RTR_FRAME, independent of kt_ival1/kt_ival2, since those may briefly hold a stale value from an earlier non-RTR configuration.

The claim is released in bcm_notify() on NETDEV_UNREGISTER and in bcm_rx_setup() when SETTIMER reconfigures the timer values.

A (re-)claim is only possible on CAN devices in NETREG_REGISTERED dev->reg_state to cover the release in bcm_notify() where reg_state becomes NETREG_UNREGISTERING until synchronize_net().

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 concurrency issue within the Linux kernel's Controller Area Network (CAN) subsystem, specifically affecting the Broadcast Message Control (BCM) module. This flaw manifests when processing ANYDEV receive operations where ifindex equals zero, creating ambiguous semantics for frame handling across multiple interfaces. The core problem arises from the lack of proper interface tracking during active timeout and throttle timer operations, leading to race conditions that can compromise system integrity.

The technical implementation flaw stems from concurrent execution of bcm_rx_handler() functions across different CPU cores when matching frames arrive from multiple interfaces simultaneously. This race condition creates a scenario where hrtimer_cancel() and bcm_rx_starttimer() operations conflict with bcm_rx_timeout_handler(), resulting in false positive RX_TIMEOUT notifications and corruption of last_frames data structures. Additionally, the shared rx_ifindex/rx_stamp fields become corrupted when throttled multiplex frames from different interfaces overwrite these single values, fundamentally undermining the reliability of CAN frame processing.

The operational impact of this vulnerability extends beyond simple notification errors to potentially compromise real-time control systems that depend on CAN communication integrity. The spurious timeout notifications could trigger unnecessary system responses in automotive or industrial applications where precise timing and reliable message delivery are critical. Furthermore, the corruption of last_frames data structures affects the accuracy of frame tracking mechanisms, potentially leading to missed frames or incorrect state reporting in safety-critical systems.

This vulnerability aligns with CWE-362, which describes race conditions in concurrent programming, and relates to ATT&CK technique T1547.001 for privilege escalation through kernel module manipulation. The fix implements a novel approach by introducing op->if_detected tracking mechanism that establishes a claim for the first interface delivering matching frames while a timer is active. This solution ensures that only frames from the claimed interface are processed, preventing interference from other interfaces during timeout/throttle operations.

The mitigation strategy specifically addresses the concurrency issue by making the interface claim decision in bcm_rx_handler() before any hrtimer_cancel() operations touch op->timer, thereby ensuring that rejected frames cannot disturb the claimed interface's watchdog functionality. The implementation also excludes RTR-mode operations through RX_RTR_FRAME checking, independent of timer configuration values, preventing stale data from affecting the system behavior. The solution properly handles interface state management by releasing claims during NETDEV_UNREGISTER events and when SETTIMER reconfigures timer values, maintaining consistency throughout the device lifecycle.

The fix requires that interface claims can only be established on CAN devices in the NETREG_REGISTERED state to ensure proper synchronization with the bcm_notify() cleanup mechanism where reg_state transitions from NETREG_REGISTERING to NETREG_UNREGISTERING during device removal operations. This architectural consideration prevents potential deadlocks or inconsistent states during device registration and unregistration processes, maintaining kernel stability while addressing the core concurrency issue that could otherwise lead to system crashes or unpredictable behavior in CAN-based communication systems.

Responsible

Linux

Reservation

08/09/2026

Disclosure

08/15/2026

Moderation

accepted

CPE

ready

EPSS

0.00209

KEV

no

Activities

very low

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!