CVE-2026-23423 Overview
A memory leak vulnerability has been identified in the Linux kernel's btrfs filesystem implementation, specifically within the btrfs_uring_read_extent() function. The vulnerability occurs when the pages object is not properly freed during error conditions, leading to potential memory exhaustion over time.
In the affected function, the pages object allocation is never freed on error paths, with the expectation that it would be cleaned up by btrfs_uring_read_finished() during deferred execution. However, this assumption only holds for the successful execution path. When previous allocations fail or when btrfs_encoded_read_regular_fill_pages() does not return -EIOCBQUEUED, the code transitions to a cleanup section that fails to free the pages allocation, resulting in a memory leak.
Critical Impact
Persistent memory leaks in kernel space can lead to system instability, denial of service conditions, and potential exploitation for resource exhaustion attacks on Linux systems using btrfs filesystem.
Affected Products
- Linux Kernel (btrfs filesystem component)
- Systems utilizing io_uring with btrfs encoded read operations
Discovery Timeline
- April 3, 2026 - CVE-2026-23423 published to NVD
- April 3, 2026 - Last updated in NVD database
Technical Details for CVE-2026-23423
Vulnerability Analysis
This vulnerability is classified as a Memory Leak within the Linux kernel's btrfs filesystem subsystem. The issue stems from improper resource cleanup in the btrfs_uring_read_extent() function when handling error conditions during io_uring read operations.
The function allocates memory for a pages object that is intended to be freed by btrfs_uring_read_finished() upon successful completion of deferred I/O operations. However, the error handling logic fails to account for scenarios where deferred execution never occurs, leaving allocated memory unreferenced and unrecoverable.
Root Cause
The root cause is an incomplete error handling path in btrfs_uring_read_extent(). When the function encounters an error condition—either from failed prior allocations or when btrfs_encoded_read_regular_fill_pages() returns a value other than -EIOCBQUEUED—it jumps to a cleanup section. This cleanup section is designed to free all resources allocated by the function, but it incorrectly omits the pages allocation from its cleanup routine, assuming the deferred execution path will handle it.
Attack Vector
While the attack vector for this vulnerability is currently unknown, the memory leak could potentially be exploited by:
- Repeatedly triggering the error condition in btrfs_uring_read_extent() to cause progressive memory exhaustion
- Crafting specific io_uring operations against btrfs filesystems that reliably hit the vulnerable error paths
- Using this memory leak as part of a larger attack chain targeting system stability
The vulnerability requires local access to a system with btrfs filesystem mounted and the ability to perform io_uring operations against it.
Detection Methods for CVE-2026-23423
Indicators of Compromise
- Gradual increase in kernel memory usage over time on systems using btrfs with io_uring operations
- System logs indicating memory pressure or out-of-memory conditions without corresponding user-space memory growth
- Unexplained kernel memory fragmentation on btrfs-enabled systems
Detection Strategies
- Monitor /proc/meminfo for abnormal growth in Slab or KernelStack memory allocations
- Use slabtop or /proc/slabinfo to track btrfs-related slab allocations over time
- Implement kernel memory leak detection tools such as kmemleak to identify unreferenced memory blocks
- Deploy SentinelOne's kernel-level monitoring capabilities to detect anomalous memory patterns
Monitoring Recommendations
- Establish baseline memory usage patterns for systems utilizing btrfs filesystems
- Configure alerting thresholds for kernel memory growth that exceeds normal operational parameters
- Review system logs for btrfs-related errors that may indicate exploitation attempts
- Monitor io_uring operation patterns for unusual activity targeting btrfs volumes
How to Mitigate CVE-2026-23423
Immediate Actions Required
- Update the Linux kernel to a patched version that includes the fix for CVE-2026-23423
- Consider temporarily disabling io_uring operations on btrfs filesystems if updates cannot be immediately applied
- Monitor affected systems for signs of memory exhaustion until patches are deployed
- Review and prioritize kernel updates for systems with critical btrfs workloads
Patch Information
The Linux kernel development team has released patches to address this vulnerability. The fix ensures that the pages allocation is properly freed in all error paths within btrfs_uring_read_extent(), not just during successful deferred execution cleanup.
Patches are available through the following kernel git commits:
Workarounds
- Limit io_uring usage on systems with btrfs filesystems until patches can be applied
- Implement memory monitoring and automated system restarts if kernel memory exceeds safe thresholds
- Consider using alternative filesystems for workloads that heavily rely on io_uring operations
- Deploy kernel live patching solutions if available for your distribution to apply fixes without system restarts
# Monitor kernel memory usage for btrfs-related allocations
watch -n 5 'grep -i btrfs /proc/slabinfo'
# Check for memory leak indicators
cat /sys/kernel/debug/kmemleak 2>/dev/null | grep -i btrfs
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

