CVE-2024-50278
"linux kernel dm cache out-of-bounds access"
Description
In the Linux kernel, the following vulnerability has been resolved: dm cache: fix potential out-of-bounds access on the first resume Out-of-bounds access occurs if the fast device is expanded unexpectedly before the first-time resume of the cache table. This happens because expanding the fast device requires reloading the cache table for cache_create to allocate new in-core data structures that fit the new size, and the check in cache_preresume is not performed during the first resume, leading to the issue. Reproduce steps: 1. prepare component devices: dmsetup create cmeta --table "0 8192 linear /dev/sdc 0" dmsetup create cdata --table "0 65536 linear /dev/sdc 8192" dmsetup create corig --table "0 524288 linear /dev/sdc 262144" dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1 oflag=direct 2. load a cache table of 512 cache blocks, and deliberately expand the fast device before resuming the cache, making the in-core data structures inadequate. dmsetup create cache --notable dmsetup reload cache --table "0 524288 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0" dmsetup reload cdata --table "0 131072 linear /dev/sdc 8192" dmsetup resume cdata dmsetup resume cache 3. suspend the cache to write out the in-core dirty bitset and hint array, leading to out-of-bounds access to the dirty bitset at offset 0x40: dmsetup suspend cache KASAN reports: BUG: KASAN: vmalloc-out-of-bounds in is_dirty_callback+0x2b/0x80 Read of size 8 at addr ffffc90000085040 by task dmsetup/90 (...snip...) The buggy address belongs to the virtual mapping at [ffffc90000085000, ffffc90000087000) created by: cache_ctr+0x176a/0x35f0 (...snip...) Memory state around the buggy address: ffffc90000084f00: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ffffc90000084f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 >ffffc90000085000: 00 00 00 00 00 00 00 00 f8 f8 f8 f8 f8 f8 f8 f8 ^ ffffc90000085080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ffffc90000085100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 Fix by checking the size change on the first resume.
INFO
Published Date :
Nov. 19, 2024, 2:16 a.m.
Last Modified :
Nov. 27, 2024, 4 p.m.
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Remotely Exploitable :
No
Impact Score :
5.2
Exploitability Score :
1.8
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2024-50278
.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2024-50278
vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2024-50278
vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
Initial Analysis by [email protected]
Nov. 27, 2024
Action Type Old Value New Value Added CVSS V3.1 NIST AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H Added CWE NIST CWE-125 Added CPE Configuration OR *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 3.13 up to (excluding) 4.19.324 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 4.20 up to (excluding) 5.4.286 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.5 up to (excluding) 5.10.230 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.11 up to (excluding) 5.15.172 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.16 up to (excluding) 6.1.117 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.2 up to (excluding) 6.6.61 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.7 up to (excluding) 6.11.8 *cpe:2.3:o:linux:linux_kernel:6.12:rc1:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:6.12:rc2:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:6.12:rc3:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:6.12:rc4:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:6.12:rc5:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:6.12:rc6:*:*:*:*:*:* Changed Reference Type https://git.kernel.org/stable/c/036dd6e3d2638103e0092864577ea1d091466b86 No Types Assigned https://git.kernel.org/stable/c/036dd6e3d2638103e0092864577ea1d091466b86 Patch Changed Reference Type https://git.kernel.org/stable/c/13ed3624c6ef283acefa4cc42cc8ae54fd4391a4 No Types Assigned https://git.kernel.org/stable/c/13ed3624c6ef283acefa4cc42cc8ae54fd4391a4 Patch Changed Reference Type https://git.kernel.org/stable/c/2222b0929d00e2d13732b799b63be391b5de4492 No Types Assigned https://git.kernel.org/stable/c/2222b0929d00e2d13732b799b63be391b5de4492 Patch Changed Reference Type https://git.kernel.org/stable/c/483b7261b35a9d369082ab298a6670912243f0be No Types Assigned https://git.kernel.org/stable/c/483b7261b35a9d369082ab298a6670912243f0be Patch Changed Reference Type https://git.kernel.org/stable/c/c0ade5d98979585d4f5a93e4514c2e9a65afa08d No Types Assigned https://git.kernel.org/stable/c/c0ade5d98979585d4f5a93e4514c2e9a65afa08d Patch Changed Reference Type https://git.kernel.org/stable/c/c52ec00cb2f9bebfada22edcc0db385b910a1cdb No Types Assigned https://git.kernel.org/stable/c/c52ec00cb2f9bebfada22edcc0db385b910a1cdb Patch Changed Reference Type https://git.kernel.org/stable/c/e492f71854ce03474d49e87fd98b8df1f7cd1d2d No Types Assigned https://git.kernel.org/stable/c/e492f71854ce03474d49e87fd98b8df1f7cd1d2d Patch Changed Reference Type https://git.kernel.org/stable/c/fdef3b94dfebd57e3077a578b6e309a2bb6fa688 No Types Assigned https://git.kernel.org/stable/c/fdef3b94dfebd57e3077a578b6e309a2bb6fa688 Patch -
CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Nov. 19, 2024
Action Type Old Value New Value Added Description In the Linux kernel, the following vulnerability has been resolved: dm cache: fix potential out-of-bounds access on the first resume Out-of-bounds access occurs if the fast device is expanded unexpectedly before the first-time resume of the cache table. This happens because expanding the fast device requires reloading the cache table for cache_create to allocate new in-core data structures that fit the new size, and the check in cache_preresume is not performed during the first resume, leading to the issue. Reproduce steps: 1. prepare component devices: dmsetup create cmeta --table "0 8192 linear /dev/sdc 0" dmsetup create cdata --table "0 65536 linear /dev/sdc 8192" dmsetup create corig --table "0 524288 linear /dev/sdc 262144" dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1 oflag=direct 2. load a cache table of 512 cache blocks, and deliberately expand the fast device before resuming the cache, making the in-core data structures inadequate. dmsetup create cache --notable dmsetup reload cache --table "0 524288 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0" dmsetup reload cdata --table "0 131072 linear /dev/sdc 8192" dmsetup resume cdata dmsetup resume cache 3. suspend the cache to write out the in-core dirty bitset and hint array, leading to out-of-bounds access to the dirty bitset at offset 0x40: dmsetup suspend cache KASAN reports: BUG: KASAN: vmalloc-out-of-bounds in is_dirty_callback+0x2b/0x80 Read of size 8 at addr ffffc90000085040 by task dmsetup/90 (...snip...) The buggy address belongs to the virtual mapping at [ffffc90000085000, ffffc90000087000) created by: cache_ctr+0x176a/0x35f0 (...snip...) Memory state around the buggy address: ffffc90000084f00: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ffffc90000084f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 >ffffc90000085000: 00 00 00 00 00 00 00 00 f8 f8 f8 f8 f8 f8 f8 f8 ^ ffffc90000085080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ffffc90000085100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 Fix by checking the size change on the first resume. Added Reference kernel.org https://git.kernel.org/stable/c/e492f71854ce03474d49e87fd98b8df1f7cd1d2d [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/2222b0929d00e2d13732b799b63be391b5de4492 [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/483b7261b35a9d369082ab298a6670912243f0be [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/fdef3b94dfebd57e3077a578b6e309a2bb6fa688 [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/c52ec00cb2f9bebfada22edcc0db385b910a1cdb [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/036dd6e3d2638103e0092864577ea1d091466b86 [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/13ed3624c6ef283acefa4cc42cc8ae54fd4391a4 [No types assigned] Added Reference kernel.org https://git.kernel.org/stable/c/c0ade5d98979585d4f5a93e4514c2e9a65afa08d [No types assigned]
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2024-50278
is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2024-50278
weaknesses.