CVE-2024-45022
Severity CVSS v4.0:
Pending analysis
Type:
CWE-787
Out-of-bounds Write
Publication date:
11/09/2024
Last modified:
03/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0<br />
<br />
The __vmap_pages_range_noflush() assumes its argument pages** contains<br />
pages with the same page shift. However, since commit e9c3cda4d86e ("mm,<br />
vmalloc: fix high order __GFP_NOFAIL allocations"), if gfp_flags includes<br />
__GFP_NOFAIL with high order in vm_area_alloc_pages() and page allocation<br />
failed for high order, the pages** may contain two different page shifts<br />
(high order and order-0). This could lead __vmap_pages_range_noflush() to<br />
perform incorrect mappings, potentially resulting in memory corruption.<br />
<br />
Users might encounter this as follows (vmap_allow_huge = true, 2M is for<br />
PMD_SIZE):<br />
<br />
kvmalloc(2M, __GFP_NOFAIL|GFP_X)<br />
__vmalloc_node_range_noprof(vm_flags=VM_ALLOW_HUGE_VMAP)<br />
vm_area_alloc_pages(order=9) ---> order-9 allocation failed and fallback to order-0<br />
vmap_pages_range()<br />
vmap_pages_range_noflush()<br />
__vmap_pages_range_noflush(page_shift = 21) ----> wrong mapping happens<br />
<br />
We can remove the fallback code because if a high-order allocation fails,<br />
__vmalloc_node_range_noprof() will retry with order-0. Therefore, it is<br />
unnecessary to fallback to order-0 here. Therefore, fix this by removing<br />
the fallback code.
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:*:*:*:*:*:*:*:* | 6.1.95 (including) | 6.1.107 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.3 (including) | 6.6.48 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.10.7 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.11:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:* |
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/61ebe5a747da649057c37be1c37eb934b4af79ca
- https://git.kernel.org/stable/c/c91618816f4d21fc574d7577a37722adcd4075b2
- https://git.kernel.org/stable/c/de7bad86345c43cd040ed43e20d9fad78a3ee59f
- https://git.kernel.org/stable/c/fd1ffbb50ef4da5e1378a46616b6d7407dc795da
- https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html



