CVE-2024-45022

MEDIUM EPSS 12.5%
Published Sep 11, 20241y ago · Modified Jun 17, 20261w ago
5.5 CVSS 3.1
Medium
Find Similar
Published Sep 11, 2024 1y ago
Last Modified Jun 17, 2026 1w ago

Description

In the Linux kernel, the following vulnerability has been resolved: mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0 The __vmap_pages_range_noflush() assumes its argument pages** contains pages with the same page shift. However, since commit e9c3cda4d86e ("mm, vmalloc: fix high order __GFP_NOFAIL allocations"), if gfp_flags includes __GFP_NOFAIL with high order in vm_area_alloc_pages() and page allocation failed for high order, the pages** may contain two different page shifts (high order and order-0). This could lead __vmap_pages_range_noflush() to perform incorrect mappings, potentially resulting in memory corruption. Users might encounter this as follows (vmap_allow_huge = true, 2M is for PMD_SIZE): kvmalloc(2M, __GFP_NOFAIL|GFP_X) __vmalloc_node_range_noprof(vm_flags=VM_ALLOW_HUGE_VMAP) vm_area_alloc_pages(order=9) ---> order-9 allocation failed and fallback to order-0 vmap_pages_range() vmap_pages_range_noflush() __vmap_pages_range_noflush(page_shift = 21) ----> wrong mapping happens We can remove the fallback code because if a high-order allocation fails, __vmalloc_node_range_noprof() will retry with order-0. Therefore, it is unnecessary to fallback to order-0 here. Therefore, fix this by removing the fallback code.

CVSS Details

Base Score
5.5
Exploitability
1.8
Impact
3.6
Vector string
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Attack Vector Local
Attack Complexity Low
Privileges Required Low
User Interaction None
Scope Unchanged
Confidentiality None
Integrity None
Availability High

Threat Intelligence

EPSS Exploit Probability
12.5% percentile
Exploit & Patch Status
No Known Exploit
Patch Available

Weaknesses 1

CWE-787 Out-of-bounds Write Memory Safety

Affected Products 6

VendorProductVersionRange
linuxlinux_kernel*≥6.1.95  –  <6.1.107
linuxlinux_kernel*≥6.3  –  <6.6.48
linuxlinux_kernel*≥6.7  –  <6.10.7
linuxlinux_kernel6.11any
linuxlinux_kernel6.11any
linuxlinux_kernel6.11any

References 5

  • git.kernel.org https://git.kernel.org/stable/c/61ebe5a747da649057c37be1c37eb934b4af79ca
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/c91618816f4d21fc574d7577a37722adcd4075b2
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/de7bad86345c43cd040ed43e20d9fad78a3ee59f
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/fd1ffbb50ef4da5e1378a46616b6d7407dc795da
    Patch
  • lists.debian.org https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html

Remediation

  • git.kernel.org https://git.kernel.org/stable/c/61ebe5a747da649057c37be1c37eb934b4af79ca
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/c91618816f4d21fc574d7577a37722adcd4075b2
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/de7bad86345c43cd040ed43e20d9fad78a3ee59f
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/fd1ffbb50ef4da5e1378a46616b6d7407dc795da
    Patch