Linux Kernel up to 6.6.23/6.7.11/6.8.2 btrfs read_extent_buffer_pages race condition

| CVSS Meta Temp Score | Current Exploit Price (≈) | CTI Interest Score |
|---|---|---|
| 4.6 | $0-$5k | 0.00 |
Summary
A vulnerability was found in Linux Kernel up to 6.6.23/6.7.11/6.8.2. It has been classified as critical. This vulnerability affects the function read_extent_buffer_pages of the component btrfs. Performing a manipulation results in race condition.
This vulnerability is reported as CVE-2024-35798. No exploit exists.
Upgrading the affected component is recommended.
Details
A vulnerability, which was classified as critical, was found in Linux Kernel up to 6.6.23/6.7.11/6.8.2. This affects the function read_extent_buffer_pages of the component btrfs. The manipulation with an unknown input leads to a race condition vulnerability. CWE is classifying the issue as CWE-362. The product contains a code sequence that can run concurrently with other code, and the code sequence requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence that is operating concurrently. The impact remains unknown. The summary by CVE is:
In the Linux kernel, the following vulnerability has been resolved: btrfs: fix race in read_extent_buffer_pages() There are reports from tree-checker that detects corrupted nodes, without any obvious pattern so possibly an overwrite in memory. After some debugging it turns out there's a race when reading an extent buffer the uptodate status can be missed. To prevent concurrent reads for the same extent buffer, read_extent_buffer_pages() performs these checks: /* (1) */ if (test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags)) return 0; /* (2) */ if (test_and_set_bit(EXTENT_BUFFER_READING, &eb->bflags)) goto done; At this point, it seems safe to start the actual read operation. Once that completes, end_bbio_meta_read() does /* (3) */ set_extent_buffer_uptodate(eb); /* (4) */ clear_bit(EXTENT_BUFFER_READING, &eb->bflags); Normally, this is enough to ensure only one read happens, and all other callers wait for it to finish before returning. Unfortunately, there is a racey interleaving: Thread A | Thread B | Thread C ---------+----------+--------- (1) | | | (1) | (2) | | (3) | | (4) | | | (2) | | | (1) When this happens, thread B kicks of an unnecessary read. Worse, thread C will see UPTODATE set and return immediately, while the read from thread B is still in progress. This race could result in tree-checker errors like this as the extent buffer is concurrently modified: BTRFS critical (device dm-0): corrupted node, root=256 block=8550954455682405139 owner mismatch, have 11858205567642294356 expect [256, 18446744073709551360] Fix it by testing UPTODATE again after setting the READING bit, and if it's been set, skip the unnecessary read. [ minor update of changelog ]
It is possible to read the advisory at git.kernel.org. This vulnerability is uniquely identified as CVE-2024-35798. The exploitability is told to be difficult. Technical details of the vulnerability are known, but there is no available exploit.
The vulnerability scanner Nessus provides a plugin with the ID 239850 (TencentOS Server 4: kernel (TSSA-2024:0980)), which helps to determine the existence of the flaw in a target environment.
Upgrading to version 6.6.24, 6.7.12 or 6.8.3 eliminates this vulnerability. Applying the patch 0427c8ef8bbb/3a25878a3378/2885d54af2c2/ef1e68236b91 is able to eliminate this problem. The bugfix is ready for download at git.kernel.org. The best possible mitigation is suggested to be upgrading to the latest version.
The vulnerability is also documented in the databases at Tenable (239850) and CERT Bund (WID-SEC-2024-1188). Be aware that VulDB is the high quality source for vulnerability data.
Affected
- Google Container-Optimized OS
- Debian Linux
- Amazon Linux 2
- Red Hat Enterprise Linux
- Ubuntu Linux
- SUSE Linux
- IBM InfoSphere Guardium
- Oracle Linux
- Oracle VM
- NetApp FAS
- EMC Avamar
- IBM SAN Volume Controller
- Dell NetWorker
- IBM FlashSystem
- IBM Security Guardium
- RESF Rocky Linux
- Broadcom Brocade SANnav
- Open Source Linux Kernel
- IBM Business Automation Workflow
- IBM Spectrum Protect Plus
- IBM QRadar SIEM
- Dell Avamar
- Juniper Junos Space
- IBM DB2
- IBM Storage Scale System
- SolarWinds Security Event Manager
- IBM Security Verify Access
Product
Type
Vendor
Name
Version
- 6.6.0
- 6.6.1
- 6.6.2
- 6.6.3
- 6.6.4
- 6.6.5
- 6.6.6
- 6.6.7
- 6.6.8
- 6.6.9
- 6.6.10
- 6.6.11
- 6.6.12
- 6.6.13
- 6.6.14
- 6.6.15
- 6.6.16
- 6.6.17
- 6.6.18
- 6.6.19
- 6.6.20
- 6.6.21
- 6.6.22
- 6.6.23
- 6.7.0
- 6.7.1
- 6.7.2
- 6.7.3
- 6.7.4
- 6.7.5
- 6.7.6
- 6.7.7
- 6.7.8
- 6.7.9
- 6.7.10
- 6.7.11
- 6.8.0
- 6.8.1
- 6.8.2
License
Website
- Vendor: https://www.kernel.org/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔍VulDB Reliability: 🔍
CVSSv3
VulDB Meta Base Score: 4.6VulDB Meta Temp Score: 4.6
VulDB Base Score: 4.6
VulDB Temp Score: 4.4
VulDB Vector: 🔍
VulDB Reliability: 🔍
NVD Base Score: 4.7
NVD Vector: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complexity | Authentication | Confidentiality | Integrity | Availability |
|---|---|---|---|---|---|
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
VulDB Base Score: 🔍
VulDB Temp Score: 🔍
VulDB Reliability: 🔍
Exploiting
Class: Race conditionCWE: CWE-362
CAPEC: 🔍
ATT&CK: 🔍
Physical: Partially
Local: Yes
Remote: Partially
Availability: 🔍
Status: Not defined
EPSS Score: 🔍
EPSS Percentile: 🔍
Price Prediction: 🔍
Current Price Estimation: 🔍
| 0-Day | Unlock | Unlock | Unlock | Unlock |
|---|---|---|---|---|
| Today | Unlock | Unlock | Unlock | Unlock |
Nessus ID: 239850
Nessus Name: TencentOS Server 4: kernel (TSSA-2024:0980)
Threat Intelligence
Interest: 🔍Active Actors: 🔍
Active APT Groups: 🔍
Countermeasures
Recommended: UpgradeStatus: 🔍
0-Day Time: 🔍
Upgrade: Kernel 6.6.24/6.7.12/6.8.3
Patch: 0427c8ef8bbb/3a25878a3378/2885d54af2c2/ef1e68236b91
Timeline
05/17/2024 🔍05/17/2024 🔍
07/12/2026 🔍
Sources
Vendor: kernel.orgAdvisory: git.kernel.org
Status: Confirmed
CVE: CVE-2024-35798 (🔍)
GCVE (CVE): GCVE-0-2024-35798
GCVE (VulDB): GCVE-100-264927
CERT Bund: WID-SEC-2024-1188 - Linux Kernel: Mehrere Schwachstellen ermöglichen Denial of Service
Entry
Created: 05/17/2024 15:50Updated: 07/12/2026 13:51
Changes: 05/17/2024 15:50 (57), 06/19/2025 19:02 (3), 07/21/2025 03:01 (7), 09/19/2025 17:33 (11), 07/12/2026 13:51 (2)
Complete: 🔍
Cache ID: 216::103
Be aware that VulDB is the high quality source for vulnerability data.
No comments yet. Languages: en.
Please log in to comment.