Skip to main content

Linux Kernel EUVDEUVD-2026-58933

| CVE-2026-72175 HIGH
2026-08-15 416baaa9-dc9f-4396-8d5f-8c081fb06d67 GHSA-jw79-wr8v-532g
High
Disputed · 7.1 Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Share

Severity by source

Sources disagree (Low–High)
Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY
7.1 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
vuln.today AI
5.3 MEDIUM

Race condition requires hardware MMU timing (AC:H); primary impact is page-table integrity loss (I:H), with only indirect metadata confidentiality exposure (C:L), no availability impact.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:H/A:N
4.0 AV:L/AC:H/AT:N/PR:L/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE
2.5 LOW
AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N
Red Hat
5.5 MEDIUM
qualitative

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

5
Analysis Generated
Aug 17, 2026 - 07:26 vuln.today
CVSS changed
Aug 17, 2026 - 06:22 NVD
7.1 (HIGH)
Patch available
Aug 15, 2026 - 07:20 EUVD
CVE Published
Aug 15, 2026 - 06:21 cve.org
HIGH 7.1
CVE Published
Aug 15, 2026 - 06:21 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

fs/proc/task_mmu: fix make_uffd_wp_huge_pte() prot-update race

Patch series "userfaultfd/pagemap: pre-existing fixes".

These are pre-existing bug fixes that were carried at the front of the userfaultfd RWP working-set-tracking series up to v5 [1]. Per review feedback that fixes should not sit in the middle of a feature series, they are split out and sent on their own; the RWP series is reposted rebased on top of this.

All six were flagged by the Sashiko AI review of the RWP series and carry independent of RWP, apply to mm-new directly, and carry Cc: stable@.

1: fs/proc/task_mmu: a missing huge_ptep_modify_prot_start() in make_uffd_wp_huge_pte() can lose hardware Dirty/Accessed updates when PAGEMAP_SCAN write-protects a hugetlb PTE.

2: fs/proc/task_mmu: pagemap_scan_hugetlb_entry() compares the range against HPAGE_SIZE rather than the hstate page size, so it never write-protects gigantic hugetlb pages.

3: fs/proc/task_mmu: PAGEMAP_SCAN with PM_SCAN_WP_MATCHING over an unpopulated hugetlb range self-deadlocks -- pagemap_scan_pte_hole() calls uffd_wp_range() while walk_hugetlb_range() holds the hugetlb vma lock for read, and hugetlb_change_protection() then takes it for write. Install the marker inline instead.

4: mm/huge_memory: change_non_present_huge_pmd() drops pmd_swp_uffd_wp on a device-private PMD permission downgrade, silently losing the uffd-wp marker.

5: userfaultfd: must_wait() applies pte_write() to a locklessly read PTE without checking pte_present(), so swap/migration entries decode random offset bits and a thread can stay parked on a stale fault.

6: userfaultfd: __VMA_UFFD_FLAGS feeds VMA_UFFD_MINOR_BIT (41) to mk_vma_flags() unconditionally, an out-of-bounds write into the single-word vma_flags_t on 32-bit. Build the mask from config-gated per-mode masks so an unavailable bit is never materialised.

This patch (of 6):

make_uffd_wp_huge_pte() arms the UFFD_WP bit on a present HugeTLB PTE by calling huge_ptep_modify_prot_commit() with a ptent snapshot that was fetched without the corresponding huge_ptep_modify_prot_start(). The start helper is what atomically clears the entry so the kernel-owned snapshot stays consistent until the commit; without it, the hardware may set Dirty or Accessed in the live PTE between the original read and the commit, and huge_ptep_modify_prot_commit() (whose generic implementation just calls set_huge_pte_at()) then writes the stale snapshot back over the live hardware bits, losing the update.

The non-hugetlb sibling make_uffd_wp_pte() does this correctly via ptep_modify_prot_start() / ptep_modify_prot_commit(). Mirror that pattern for the present-PTE branch. The migration case stays as-is -- migration entries are non-present, so there's no hardware update to race against.

AnalysisAI

Race condition in the Linux kernel's HugeTLB page table protection code allows a local low-privileged user to corrupt page tracking state or leak memory access metadata. Specifically, make_uffd_wp_huge_pte() in fs/proc/task_mmu.c invokes huge_ptep_modify_prot_commit() on a PTE snapshot captured without the preceding huge_ptep_modify_prot_start() atomic clear, creating a window where hardware can set Dirty or Accessed bits between the read and commit, which are then silently overwritten with stale values. EPSS is 0.21% (11th percentile) and no active exploitation has been confirmed - this is a correctness/integrity fix in the kernel stable queue, not a commonly weaponized class of vulnerability.

Technical ContextAI

The affected code path is fs/proc/task_mmu.c::make_uffd_wp_huge_pte(), part of the Linux userfaultfd (UFFD) subsystem's PAGEMAP_SCAN write-protection logic for HugeTLB (large/gigantic page) PTEs. The non-hugetlb counterpart make_uffd_wp_pte() correctly brackets its PTE modification with ptep_modify_prot_start() / ptep_modify_prot_commit(), which atomically clears the live PTE first so the kernel holds a consistent snapshot while writing the new protection bits. The HugeTLB variant skipped huge_ptep_modify_prot_start(), leaving a TOCTOU window where the CPU MMU hardware may asynchronously set the Dirty or Accessed bits in the live PTE. When huge_ptep_modify_prot_commit() (which calls set_huge_pte_at() in the generic implementation) then writes the stale snapshot back, those hardware-set bits are lost. This is a data-race on the page table entry, not a buffer overflow despite the supplied tag. The vulnerability was introduced at commit 52526ca7fdb905a768a93f8faa418e9b988fc34b and is part of a six-fix series identified by the Sashiko AI review of the RWP (UFFD write-protect) working-set-tracking feature series.

RemediationAI

Upgrade to a patched kernel version: Linux 7.1.5, 6.12.101, or 6.18.42 are the confirmed stable releases containing the fix; Linux 7.2-rc1 contains it for the mainline branch. The upstream patches are available at https://git.kernel.org/stable/c/04718f7c9290f95385f0dd328758753dc1c36dec, https://git.kernel.org/stable/c/50a25249a6355db74c2c1b6be541b4caab9f3655, https://git.kernel.org/stable/c/8e39ed92d7c5c6bfc08dc45153916f49a4e98bab, and https://git.kernel.org/stable/c/6b7f774b8882445d9174681747d37c42548686a4. As a compensating control on systems where kernel update is not immediately possible, disabling or restricting access to the PAGEMAP_SCAN ioctl via seccomp policy or restricting /proc/PID/pagemap access (which typically requires CAP_SYS_PTRACE or equivalent) will prevent exploitation, at the cost of breaking applications that rely on UFFD write-protect memory tracking. Systems not using HugeTLB pages are not reachable via this specific code path.

Vendor StatusVendor

SUSE

Severity: Low
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

EUVD-2026-58933 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy