CVE-2024-56759
Severity CVSS v4.0:
Pending analysis
Type:
CWE-416
Use After Free
Publication date:
06/01/2025
Last modified:
03/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
btrfs: fix use-after-free when COWing tree bock and tracing is enabled<br />
<br />
When a COWing a tree block, at btrfs_cow_block(), and we have the<br />
tracepoint trace_btrfs_cow_block() enabled and preemption is also enabled<br />
(CONFIG_PREEMPT=y), we can trigger a use-after-free in the COWed extent<br />
buffer while inside the tracepoint code. This is because in some paths<br />
that call btrfs_cow_block(), such as btrfs_search_slot(), we are holding<br />
the last reference on the extent buffer @buf so btrfs_force_cow_block()<br />
drops the last reference on the @buf extent buffer when it calls<br />
free_extent_buffer_stale(buf), which schedules the release of the extent<br />
buffer with RCU. This means that if we are on a kernel with preemption,<br />
the current task may be preempted before calling trace_btrfs_cow_block()<br />
and the extent buffer already released by the time trace_btrfs_cow_block()<br />
is called, resulting in a use-after-free.<br />
<br />
Fix this by moving the trace_btrfs_cow_block() from btrfs_cow_block() to<br />
btrfs_force_cow_block() before the COWed extent buffer is freed.<br />
This also has a side effect of invoking the tracepoint in the tree defrag<br />
code, at defrag.c:btrfs_realloc_node(), since btrfs_force_cow_block() is<br />
called there, but this is fine and it was actually missing there.
Impact
Base Score 3.x
7.80
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.12.8 (excluding) | |
| cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.13:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.13:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.13:rc4:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/44f52bbe96dfdbe4aca3818a2534520082a07040
- https://git.kernel.org/stable/c/526ff5b27f090fb15040471f892cd2c9899ce314
- https://git.kernel.org/stable/c/66376f1a73cba57fd0af2631d7888605b738e499
- https://git.kernel.org/stable/c/9a466b8693b9add05de99af00c7bdff8259ecf19
- https://git.kernel.org/stable/c/ba5120a2fb5f23b4d39d302e181aa5d4e28a90d1
- https://git.kernel.org/stable/c/c3a403d8ce36f5a809a492581de5ad17843e4701
- https://lists.debian.org/debian-lts-announce/2025/03/msg00001.html
- https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html



