CVE-2026-23359 Overview
A stack-out-of-bounds write vulnerability has been identified in the Linux kernel's BPF (Berkeley Packet Filter) subsystem, specifically within the devmap functionality. The get_upper_ifindexes() function iterates over all upper devices and writes their indices into a stack-allocated array without performing proper bounds checking.
The core issue arises because callers of this function assume the maximum number of upper devices is MAX_NEST_DEV and allocate excluded_devices[1+MAX_NEST_DEV] on the stack. However, this assumption is incorrect—the number of upper devices can exceed MAX_NEST_DEV (for example, when many macvlans are configured), resulting in a stack-out-of-bounds write condition.
Critical Impact
Local attackers with the ability to create network interfaces and configure BPF programs could exploit this vulnerability to corrupt kernel stack memory, potentially leading to privilege escalation or system instability.
Affected Products
- Linux kernel (multiple versions with BPF devmap support)
- Systems using XDP programs with BPF_F_BROADCAST | BPF_F_EXCLUDE_INGRESS flags
- Environments with more than 8 (MAX_NEST_DEV) macvlan interfaces on a single device
Discovery Timeline
- 2026-03-25 - CVE CVE-2026-23359 published to NVD
- 2026-03-25 - Last updated in NVD database
Technical Details for CVE-2026-23359
Vulnerability Analysis
This vulnerability represents an Out-of-Bounds Write condition in the Linux kernel's BPF devmap implementation. The flaw exists within the get_upper_ifindexes() function, which is responsible for collecting interface indices of upper (parent) network devices.
The function writes device indices into a caller-provided array without validating whether the number of upper devices exceeds the array's allocated size. When the number of upper devices surpasses MAX_NEST_DEV (defined as 8), the function continues writing beyond the array boundary, corrupting adjacent stack memory.
This vulnerability is particularly concerning because it occurs in kernel space during the XDP (eXpress Data Path) redirect processing path, which handles high-performance packet processing. Exploitation requires the attacker to create more than 8 macvlan interfaces on a device with an XDP program attached using specific flags, then trigger packet processing through that device.
Root Cause
The root cause is the absence of bounds checking in get_upper_ifindexes() combined with an incorrect assumption by calling functions about the maximum number of upper devices. The code assumed MAX_NEST_DEV would always be the upper limit for nested devices, but this constant does not accurately represent the maximum number of macvlan interfaces that can be attached to a device.
The fix introduces a max parameter to get_upper_ifindexes() to explicitly enforce array bounds. When the number of upper devices exceeds this maximum, the function now returns -EOVERFLOW and aborts the redirect operation, preventing the stack corruption.
Attack Vector
To reproduce and exploit this vulnerability:
- Attach an XDP program to a network device using the BPF_F_BROADCAST | BPF_F_EXCLUDE_INGRESS flags
- Create more than MAX_NEST_DEV (8) macvlan interfaces on that device
- Send a packet to the device to trigger the XDP redirect path
- The packet processing will invoke get_upper_ifindexes() which will write beyond the stack-allocated array bounds
The exploitation requires local access with privileges sufficient to create network interfaces and attach BPF programs. The attacker-controlled data written out-of-bounds consists of interface indices, which may limit exploitation options but could still enable stack-based attacks in specific scenarios.
Detection Methods for CVE-2026-23359
Indicators of Compromise
- Unexpected kernel crashes or panics during network packet processing
- System instability when packet traffic is directed to devices with multiple macvlan interfaces
- Kernel oops messages referencing BPF devmap or XDP redirect functions
- Stack corruption errors in kernel logs related to network subsystems
Detection Strategies
- Monitor for unusual numbers of macvlan interfaces being created on systems with XDP programs attached
- Implement kernel-level monitoring for stack corruption or buffer overflow attempts in the BPF subsystem
- Review network interface configurations for deployments exceeding 8 macvlan interfaces per device
Monitoring Recommendations
- Enable kernel address sanitizer (KASAN) in development and testing environments to detect out-of-bounds writes
- Configure alerts for kernel panic events that reference BPF, devmap, or XDP components
- Monitor system call patterns for suspicious sequences of interface creation followed by packet injection
How to Mitigate CVE-2026-23359
Immediate Actions Required
- Update the Linux kernel to a patched version containing the bounds checking fix
- Limit the number of macvlan interfaces to fewer than 8 per device until patching is complete
- Review and audit XDP program deployments that use BPF_F_BROADCAST | BPF_F_EXCLUDE_INGRESS flags
Patch Information
The vulnerability has been resolved in the Linux kernel through multiple commits that add a max parameter to get_upper_ifindexes() to enforce proper bounds checking. The fix ensures that when too many upper devices exist, the function returns -EOVERFLOW and aborts the redirect operation safely.
Patches are available through the following kernel git commits:
- Kernel Git Commit 5000e40
- Kernel Git Commit 75d4747
- Kernel Git Commit 8a95fb9
- Kernel Git Commit b7bf516
- Kernel Git Commit ca83156
- Kernel Git Commit d2c31d8
Workarounds
- Avoid creating more than 8 macvlan interfaces on devices with XDP programs attached
- Disable XDP programs temporarily if large numbers of macvlan interfaces are required
- Implement network segmentation to reduce the need for multiple macvlan interfaces on single devices
# Check current macvlan interface count on a device
ip link show type macvlan | grep -c "link/"
# List all XDP programs attached to interfaces
ip link show | grep xdp
# Temporarily remove XDP program from an interface (if needed as workaround)
ip link set dev <interface> xdp off
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


