CVE-2024-26718
Severity CVSS v4.0:
Pending analysis
Type:
CWE-787
Out-of-bounds Write
Publication date:
03/04/2024
Last modified:
17/03/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
dm-crypt, dm-verity: disable tasklets<br />
<br />
Tasklets have an inherent problem with memory corruption. The function<br />
tasklet_action_common calls tasklet_trylock, then it calls the tasklet<br />
callback and then it calls tasklet_unlock. If the tasklet callback frees<br />
the structure that contains the tasklet or if it calls some code that may<br />
free it, tasklet_unlock will write into free memory.<br />
<br />
The commits 8e14f610159d and d9a02e016aaf try to fix it for dm-crypt, but<br />
it is not a sufficient fix and the data corruption can still happen [1].<br />
There is no fix for dm-verity and dm-verity will write into free memory<br />
with every tasklet-processed bio.<br />
<br />
There will be atomic workqueues implemented in the kernel 6.9 [2]. They<br />
will have better interface and they will not suffer from the memory<br />
corruption problem.<br />
<br />
But we need something that stops the memory corruption now and that can be<br />
backported to the stable kernels. So, I&#39;m proposing this commit that<br />
disables tasklets in both dm-crypt and dm-verity. This commit doesn&#39;t<br />
remove the tasklet support, because the tasklet code will be reused when<br />
atomic workqueues will be implemented.<br />
<br />
[1] https://lore.kernel.org/all/d390d7ee-f142-44d3-822a-87949e14608b@suse.de/T/<br />
[2] https://lore.kernel.org/lkml/20240130091300.2968534-1-tj@kernel.org/
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.9 (including) | 6.1.79 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.18 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.7.6 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.8:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.8:rc2:*:*:*:*:*:* |
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/0a9bab391e336489169b95cb0d4553d921302189
- https://git.kernel.org/stable/c/0c45a20cbe68bc4d681734f5c03891124a274257
- https://git.kernel.org/stable/c/30884a44e0cedc3dfda8c22432f3ba4078ec2d94
- https://git.kernel.org/stable/c/5735a2671ffb70ea29ca83969fe01316ee2ed6fc
- https://git.kernel.org/stable/c/b825e0f9d68c178072bffd32dd34c39e3d2d597a
- https://git.kernel.org/stable/c/0a9bab391e336489169b95cb0d4553d921302189
- https://git.kernel.org/stable/c/0c45a20cbe68bc4d681734f5c03891124a274257
- https://git.kernel.org/stable/c/30884a44e0cedc3dfda8c22432f3ba4078ec2d94
- https://git.kernel.org/stable/c/5735a2671ffb70ea29ca83969fe01316ee2ed6fc



