CVE-2024-35872

CVE-2024-35872

High · published May 19, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
13.8
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

mm/secretmem: fix GUP-fast succeeding on secretmem folios

folio_is_secretmem() currently relies on secretmem folios being LRU

folios, to save some cycles.

However, folios might reside in a folio batch without the LRU flag set, or

temporarily have their LRU flag cleared. Consequently, the LRU flag is

unreliable for this purpose.

In particular, this is the case when secretmem_fault() allocates a fresh

page and calls filemap_add_folio()->folio_add_lru(). The folio might be

added to the per-cpu folio batch and won't get the LRU flag set until the

batch was drained using e.g., lru_add_drain().

Consequently, folio_is_secretmem() might not detect secretmem folios and

GUP-fast can succeed in grabbing a secretmem folio, crashing the kernel

when we would later try reading/writing to the folio, because the folio

has been unmapped from the directmap.

Fix it by removing that unreliable check.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00236 · 13.8th percentile
Published
2024-05-19T13:15Z
Affected products (6)
ProductVersionsFixed in
linux/linux_kernel≥ 5.14, < 5.15.1545.15.154
linux/linux_kernel≥ 5.16, < 6.1.856.1.85
linux/linux_kernel≥ 6.2, < 6.6.266.6.26
linux/linux_kernel≥ 6.7, < 6.8.56.8.5
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (10)
EPSS history
Timeline
  • 19 MAY 08:34Z
    mm/secretmem: fix GUP-fast succeeding on secretmem folios
    cvelistv5