Skip to main content

CVE-2021-47508: Vulnerability in Linux Linux

Medium
VulnerabilityCVE-2021-47508cvecve-2021-47508
Published: Fri May 24 2024 (05/24/2024, 15:01:54 UTC)
Source: CVE
Vendor/Project: Linux
Product: Linux

Description

In the Linux kernel, the following vulnerability has been resolved: btrfs: free exchange changeset on failures Fstests runs on my VMs have show several kmemleak reports like the following. unreferenced object 0xffff88811ae59080 (size 64): comm "xfs_io", pid 12124, jiffies 4294987392 (age 6.368s) hex dump (first 32 bytes): 00 c0 1c 00 00 00 00 00 ff cf 1c 00 00 00 00 00 ................ 90 97 e5 1a 81 88 ff ff 90 97 e5 1a 81 88 ff ff ................ backtrace: [<00000000ac0176d2>] ulist_add_merge+0x60/0x150 [btrfs] [<0000000076e9f312>] set_state_bits+0x86/0xc0 [btrfs] [<0000000014fe73d6>] set_extent_bit+0x270/0x690 [btrfs] [<000000004f675208>] set_record_extent_bits+0x19/0x20 [btrfs] [<00000000b96137b1>] qgroup_reserve_data+0x274/0x310 [btrfs] [<0000000057e9dcbb>] btrfs_check_data_free_space+0x5c/0xa0 [btrfs] [<0000000019c4511d>] btrfs_delalloc_reserve_space+0x1b/0xa0 [btrfs] [<000000006d37e007>] btrfs_dio_iomap_begin+0x415/0x970 [btrfs] [<00000000fb8a74b8>] iomap_iter+0x161/0x1e0 [<0000000071dff6ff>] __iomap_dio_rw+0x1df/0x700 [<000000002567ba53>] iomap_dio_rw+0x5/0x20 [<0000000072e555f8>] btrfs_file_write_iter+0x290/0x530 [btrfs] [<000000005eb3d845>] new_sync_write+0x106/0x180 [<000000003fb505bf>] vfs_write+0x24d/0x2f0 [<000000009bb57d37>] __x64_sys_pwrite64+0x69/0xa0 [<000000003eba3fdf>] do_syscall_64+0x43/0x90 In case brtfs_qgroup_reserve_data() or btrfs_delalloc_reserve_metadata() fail the allocated extent_changeset will not be freed. So in btrfs_check_data_free_space() and btrfs_delalloc_reserve_space() free the allocated extent_changeset to get rid of the allocated memory. The issue currently only happens in the direct IO write path, but only after 65b3c08606e5 ("btrfs: fix ENOSPC failure when attempting direct IO write into NOCOW range"), and also at defrag_one_locked_target(). Every other place is always calling extent_changeset_free() even if its call to btrfs_delalloc_reserve_space() or btrfs_check_data_free_space() has failed.

AI-Powered Analysis

AILast updated: 06/30/2025, 13:56:28 UTC

Technical Analysis

CVE-2021-47508 is a vulnerability identified in the Linux kernel's Btrfs filesystem implementation. The issue arises from improper handling of memory allocation failures in the direct IO write path, specifically related to extent_changeset management. When functions such as btrfs_qgroup_reserve_data() or btrfs_delalloc_reserve_metadata() fail, the allocated extent_changeset is not freed properly, leading to memory leaks. This flaw was introduced after a specific commit (65b3c08606e5) that fixed an ENOSPC failure during direct IO writes into NOCOW (No Copy-On-Write) ranges. The vulnerability manifests primarily in the direct IO write path and at defrag_one_locked_target(), where extent_changeset_free() is not called on failure paths, unlike other code paths where it is correctly invoked. The technical details include kernel stack traces showing the functions involved, such as ulist_add_merge, set_state_bits, set_extent_bit, and others within the btrfs module. The memory leak is detected by kmemleak reports during filesystem tests, indicating unreferenced objects that remain allocated. Although this vulnerability does not directly cause data corruption or immediate system crashes, the memory leak can lead to resource exhaustion over time, potentially degrading system performance or causing denial of service conditions. No known exploits are reported in the wild, and no CVSS score has been assigned yet. The vulnerability affects Linux kernel versions containing the specified commit hashes, which correspond to recent kernel versions implementing the fix for ENOSPC in direct IO writes.

Potential Impact

For European organizations relying on Linux systems with Btrfs filesystems, this vulnerability poses a risk of gradual memory exhaustion on affected systems performing direct IO write operations. This can impact servers, storage appliances, or virtual machines that utilize Btrfs for data storage, especially in environments with heavy IO workloads or defragmentation processes. The memory leak could lead to degraded system responsiveness, increased swap usage, or eventual denial of service if the kernel memory is exhausted. While it does not directly compromise confidentiality or integrity, availability could be affected due to system instability or crashes caused by resource depletion. Organizations with critical infrastructure running Linux servers, cloud platforms, or container hosts using Btrfs may experience operational disruptions. The absence of known exploits reduces immediate threat but does not eliminate risk, especially in high-demand environments. The vulnerability's impact is more pronounced in long-running systems where memory leaks accumulate over time without reboot or remediation.

Mitigation Recommendations

To mitigate CVE-2021-47508, European organizations should promptly apply Linux kernel updates that include the fix for this vulnerability, ensuring the affected commit is present. Kernel versions released after May 2024 are expected to contain the patch. System administrators should monitor kernel memory usage and kmemleak reports to detect potential leaks early. For environments where immediate patching is not feasible, consider reducing or avoiding workloads that trigger direct IO writes on Btrfs or disable defragmentation tasks temporarily. Implementing proactive resource monitoring and alerting on memory consumption trends can help identify affected systems before service impact occurs. Additionally, organizations should validate their backup and recovery processes to mitigate risks from potential system instability. Engaging with Linux distribution vendors for security advisories and patches is recommended to maintain up-to-date protection. Finally, consider evaluating the necessity of Btrfs usage in critical systems and assess alternative filesystems if appropriate until patches are applied.

Need more detailed analysis?Get Pro

Technical Details

Data Version
5.1
Assigner Short Name
Linux
Date Reserved
2024-05-22T06:20:56.206Z
Cisa Enriched
true
Cvss Version
null
State
PUBLISHED

Threat ID: 682d9833c4522896dcbe92f5

Added to database: 5/21/2025, 9:09:07 AM

Last enriched: 6/30/2025, 1:56:28 PM

Last updated: 8/13/2025, 1:03:11 AM

Views: 14

Actions

PRO

Updates to AI analysis are available only with a Pro account. Contact root@offseq.com for access.

Please log in to the Console to use AI analysis features.

Need enhanced features?

Contact root@offseq.com for Pro access with improved analysis and higher rate limits.

Latest Threats