CVE Database›Document archive›CVE-2022-50630

CVE-2022-50630

kernel: mm: hugetlb: fix UAF in hugetlb_handle_userfault

Loading…

Severity

Moderate

Red Hat Product Security

7.8

CVSS 3.1

Review impact separately from score.

Published · December 8, 2025

Updated · October 2, 2026

Description

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

mm: hugetlb: fix UAF in hugetlb_handle_userfault

The vma_lock and hugetlb_fault_mutex are dropped before handling userfault and reacquire them again after handle_userfault(), but reacquire the vma_lock could lead to UAF[1,2] due to the following race,

hugetlb_fault hugetlb_no_page /unlock vma_lock / hugetlb_handle_userfault handle_userfault / unlock mm->mmap_lock/ vm_mmap_pgoff do_mmap mmap_region munmap_vma_range /* clean old vma / / lock vma_lock again <--- UAF / / unlock vma_lock */

Since the vma_lock will unlock immediately after hugetlb_handle_userfault(), let's drop the unneeded lock and unlock in hugetlb_handle_userfault() to fix the issue.

[1] https://lore.kernel.org/linux-mm/[email protected]/ [2] https://lore.kernel.org/linux-mm/[email protected]/

Statement

A race in the hugetlb + userfaultfd MISSING path could re-acquire locks after handle_userfault() while the target VMA might have been unmapped and freed, leading to a Use-After-Free and kernel crash (and possible exploitation). If /proc/sys/vm/unprivileged_userfaultfd is set to 0 (disabled), the vulnerability cannot be triggered by unprivileged users, because creating a userfaultfd file descriptor then requires CAP_SYS_PTRACE or root privileges. As result the issue poses no risk in the default system configuration.

CVSS score applicability

The CVSS score(s) listed for this vulnerability do not reflect the associated product's status, and are included for informational purposes to better understand the severity of this vulnerability.

Mitigation

No mitigation is specified in collected source.

CVSS / CWE

CVSS 3.1 · 7.8
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

CWE-362 · Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')