Cloudanix VulnDB

CVE-2025-21696

Medium · 5.5

CVSS

5.5

EPSS

0.3%

Published

Feb 12, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A memory handling bug in Linux can leave internal protection flags mismatched after moving memory regions, triggering warnings that may affect system stability.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Theoretical
Impact
Other
Component
OS kernel
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Inconsistency between cleared VM_UFFD_WP VMA flags and uncleared uffd-wp bits in PTE/PMD/swap PTE/PTE markers after mremap() on userfaultfd write-protected regions without UFFD_FEATURE_EVENT_REMAP, causing page_table_check_pte_flags() warnings on subsequent mprotect(PROT_WRITE).

Why it matters to the business

Kernel stability issues and unexpected warnings on systems performing memory remapping with userfaultfd write-protection, potentially leading to operational disruptions in containerized or virtualized Linux environments with high memory management activity.

How an attack unfolds

An attacker maps memory, registers it with userfaultfd write-protect, performs mremap() without the remap event feature, then issues mprotect to writable to trigger the flag mismatch and associated page table check warning; related Linux kernel privilege escalation patterns in the same family may chain this inconsistency for further exploitation.

How to fix it

Upgrade the Linux kernel to a version containing commit 310ac886d68de661c3a334198d8604b722d7fdf8 or later stable releases that explicitly clear uffd-wp PTE/PMD/swap/marker state on mremap().

How to confirm the fix worked

Confirm kernel source contains the mremap() uffd-wp clearing logic for PTE, huge PMD and hugetlb paths; test by exercising mremap() followed by mprotect on write-protected userfaultfd regions and verify absence of page_table_check warnings.

Typical attack path

  1. Identify process using userfaultfd with write-protection on a memory region
  2. Trigger mremap() on the region without UFFD_FEATURE_EVENT_REMAP enabled
  3. Issue mprotect(PROT_WRITE) to provoke page table check warning due to uncleared uffd-wp state
  4. Leverage resulting kernel state inconsistency for memory corruption or privilege escalation

How to detect it

Review kernel logs for page_table_check_pte_flags warnings following mremap and mprotect sequences on userfaultfd regions; inspect process memory management call traces for mremap on uffd-wp areas.

What your security team should do

  • Prioritize kernel upgrades to the fixed commit across all affected Linux distributions and containers
  • Monitor EPSS trend for any increase indicating rising exploitability
  • Audit workloads using userfaultfd with mremap() for exposure and apply updates before further kernel privilege escalation chains are published

The record

In the Linux kernel, the following vulnerability has been resolved: mm: clear uffd-wp PTE/PMD state on mremap() When mremap()ing a memory region previously registered with userfaultfd as write-protected but without UFFD_FEATURE_EVENT_REMAP, an inconsistency in flag clearing leads to a mismatch between the vma flags (which have uffd-wp cleared) and the pte/pmd flags (which do not have uffd-wp cleared). This mismatch causes a subsequent mprotect(PROT_WRITE) to trigger a warning in page_table_check_pte_flags() due to setting the pte to writable while uffd-wp is still set. Fix this by always explicitly clearing the uffd-wp pte/pmd flags on any such mremap() so that the values are consistent with the existing clearing of VM_UFFD_WP. Be careful to clear the logical flag regardless of its physical form; a PTE bit, a swap PTE bit, or a PTE marker. Cover PTE, huge PMD and hugetlb paths.

Affected packages

Ecosystem Package Introduced Fixed
AlmaLinux:10 kernel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-debug 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-debug-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-debug-devel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-debug-devel-matched 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-debug-modules 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-debug-modules-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-debug-modules-extra 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-devel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-devel-matched 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-modules 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-modules-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-64k-modules-extra 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-abi-stablelists 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-cross-headers 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-debug 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-debug-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-debug-devel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-debug-devel-matched 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-debug-modules 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-debug-modules-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-debug-modules-extra 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-debug-uki-virt 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-devel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-devel-matched 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-doc 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-headers 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-modules 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-modules-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-modules-extra 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-modules-extra-matched 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-debug 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-debug-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-debug-devel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-debug-modules 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-debug-modules-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-debug-modules-extra 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-devel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-modules 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-modules-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-64k-modules-extra 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-debug 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-debug-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-debug-devel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-debug-modules 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-debug-modules-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-debug-modules-extra 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-devel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-modules 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-modules-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-rt-modules-extra 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-tools 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-tools-libs 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-tools-libs-devel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-uki-virt 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-uki-virt-addons 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-zfcpdump 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-zfcpdump-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-zfcpdump-devel 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-zfcpdump-devel-matched 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-zfcpdump-modules 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-zfcpdump-modules-core 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 kernel-zfcpdump-modules-extra 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 libperf 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 perf 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 python3-perf 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 rtla 0 6.12.0-124.8.1.el10_1
AlmaLinux:10 rv 0 6.12.0-124.8.1.el10_1
AlmaLinux:9 kernel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-debug 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-debug-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-debug-devel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-debug-devel-matched 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-debug-modules 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-debug-modules-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-debug-modules-extra 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-devel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-devel-matched 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-modules 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-modules-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-64k-modules-extra 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-abi-stablelists 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-cross-headers 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-debug 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-debug-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-debug-devel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-debug-devel-matched 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-debug-modules 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-debug-modules-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-debug-modules-extra 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-debug-uki-virt 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-devel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-devel-matched 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-doc 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-headers 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-modules 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-modules-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-modules-extra 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-debug 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-debug-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-debug-devel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-debug-modules 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-debug-modules-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-debug-modules-extra 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-devel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-modules 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-modules-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-64k-modules-extra 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-debug 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-debug-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-debug-devel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-debug-modules 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-debug-modules-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-debug-modules-extra 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-devel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-modules 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-modules-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-rt-modules-extra 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-tools 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-tools-libs 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-tools-libs-devel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-uki-virt 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-uki-virt-addons 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-zfcpdump 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-zfcpdump-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-zfcpdump-devel 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-zfcpdump-devel-matched 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-zfcpdump-modules 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-zfcpdump-modules-core 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 kernel-zfcpdump-modules-extra 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 libperf 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 perf 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 python3-perf 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 rtla 0 5.14.0-611.5.1.el9_7
AlmaLinux:9 rv 0 5.14.0-611.5.1.el9_7
Debian:11 linux 0 No fix
Debian:12 linux 0 No fix
Debian:13 linux 0 6.12.11-1
Linux Kernel 5.7.0 6.12.11
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise High Availability Extension 15 SP7 kernel-default 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_11 0 1-150600.1.3.2
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_11 0 1-150600.13.3.1
SUSE:Linux Enterprise Live Patching 15 SP7 kernel-default 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_1 0 1-150700.15.3.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.50.1.150600.12.22.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-64kb 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-default 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-default-base 0 6.4.0-150700.53.3.1.150700.17.2.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-source 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-zfcpdump 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco 0 6.4.0-15061.21.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco_debug 0 6.4.0-15061.21.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-source-coco 0 6.4.0-15061.21.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-syms-coco 0 6.4.0-15061.21.coco15sp6.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-docs 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-obs-build 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-source 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-syms 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Module for Legacy 15 SP7 kernel-default 0 6.4.0-150700.53.3.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.37.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.37.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.37.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP7 kernel-azure 0 6.4.0-150700.20.3.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP7 kernel-source-azure 0 6.4.0-150700.20.3.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP7 kernel-syms-azure 0 6.4.0-150700.20.3.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.50.1
SUSE:Linux Enterprise Workstation Extension 15 SP7 kernel-default 0 6.4.0-150700.53.3.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.39.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.39.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.39.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.50.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.50.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.37.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.50.1

Related vulnerabilities