CVE-2024-50066

HIGHNVD 7.07.0
EchelonGraph scoreMEDIUM confidence

Score 7.0 from GitHub Security Advisory (severity: HIGH) published 2024-10-23. NVD baseline CVSS 7.0; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa, nvd
Elevated
7.0
EchelonGraph verdictPlan a fixSerious severity, but no confirmed exploitation yet.
  • High severity, but no confirmed exploitation yet
CISA-KEV: Not listedEPSS: 0%CVSS: 7.0Exploit: NoneExposed: 0

A fix is available — apply it.

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

mm/mremap: fix move_normal_pmd/retract_page_tables race

In mremap(), move_page_tables() looks at the type of the PMD entry and the specified address range to figure out by which method the next chunk of page table entries should be moved.

At that point, the mmap_lock is held in write mode, but no rmap locks are held yet. For PMD entries that point to page tables and are fully covered by the source address range, move_pgt_entry(NORMAL_PMD, ...) is called, which first takes rmap locks, then does move_normal_pmd(). move_normal_pmd() takes the necessary page table locks at source and destination, then moves an entire page table from the source to the destination.

The problem is: The rmap locks, which protect against concurrent page table removal by retract_page_tables() in the THP code, are only taken after the PMD entry has been read and it has been decided how to move it. So we can race as follows (with two processes that have mappings of the same tmpfs file that is stored on a tmpfs mount with huge=advise); note that process A accesses page tables through the MM while process B does it through the file rmap:

process A process B ========= ========= mremap mremap_to move_vma move_page_tables get_old_pmd alloc_new_pmd * PREEMPT * madvise(MADV_COLLAPSE) do_madvise madvise_walk_vmas madvise_vma_behavior madvise_collapse hpage_collapse_scan_file collapse_file retract_page_tables i_mmap_lock_read(mapping) pmdp_collapse_flush i_mmap_unlock_read(mapping) move_pgt_entry(NORMAL_PMD, ...) take_rmap_locks move_normal_pmd drop_rmap_locks

When this happens, move_normal_pmd() can end up creating bogus PMD entries in the line pmd_populate(mm, new_pmd, pmd_pgtable(pmd)). The effect depends on arch-specific and machine-specific details; on x86, you can end up with physical page 0 mapped as a page table, which is likely exploitable for user->kernel privilege escalation.

Fix the race by letting process B recheck that the PMD still points to a page table after the rmap locks have been taken. Otherwise, we bail and let the caller fall back to the PTE-level copying path, which will then bail immediately at the pmd_none() check.

Bug reachability: Reaching this bug requires that you can create shmem/file THP mappings - anonymous THP uses different code that doesn't zap stuff under rmap locks. File THP is gated on an experimental config flag (CONFIG_READ_ONLY_THP_FOR_FS), so on normal distro kernels you need shmem THP to hit this bug. As far as I know, getting shmem THP normally requires that you can mount your own tmpfs with the right mount flags, which would require creating your own user+mount namespace; though I don't know if some distros maybe enable shmem THP by default or something like that.

Bug impact: This issue can likely be used for user->kernel privilege escalation when it is reachable.

CVSS v3
7.0
EG Score
7.0(medium)
EG Risk
48(Track*)
EG Risk 48/100SSVC: Track*

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity70% × 45%
Exploitation40% × 40%
Automatability0% × 15%
Action: Watch closely — could escalate to Attend.
EPSS
10.0%
KEV
Not listed

Published

October 23, 2024

Last Modified

March 7, 2025

Patch Availability(15)

Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.

Weakness Classification(1)

MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.

All Vendor Advisories

(15)

Data Freshness Timeline

(refreshed 14× in last 7d / 41× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

  1. 2026-07-24 14:16 UTCEPSS rescore
  2. 2026-07-23 14:17 UTCEPSS rescore
  3. 2026-07-23 14:17 UTCEPSS rescore
  4. 2026-07-23 02:42 UTCEG score recompute
  5. 2026-07-22 14:07 UTCEPSS rescore
  6. 2026-07-22 14:07 UTCEPSS rescore
  7. 2026-07-21 15:23 UTCEPSS rescore
  8. 2026-07-20 17:06 UTCEPSS rescore
  9. 2026-07-19 14:30 UTCEPSS rescore
  10. 2026-07-19 14:30 UTCEPSS rescore
  11. 2026-07-19 02:28 UTCEPSS rescore
  12. 2026-07-19 02:28 UTCEPSS rescore
  13. 2026-07-18 10:03 UTCEPSS rescore
  14. 2026-07-18 10:03 UTCEPSS rescore
  15. 2026-07-16 17:02 UTCEPSS rescore
  16. 2026-07-15 01:59 UTCEPSS rescore
  17. 2026-07-15 01:59 UTCEPSS rescore
  18. 2026-07-13 22:29 UTCEPSS rescore
  19. 2026-07-13 22:08 UTCOSV refresh
  20. 2026-07-13 06:12 UTCEPSS rescore
  21. 2026-07-12 05:45 UTCEPSS rescore
  22. 2026-07-12 05:45 UTCEPSS rescore
  23. 2026-07-11 08:26 UTCEPSS rescore
  24. 2026-07-09 19:09 UTCEPSS rescore
  25. 2026-07-09 19:09 UTCEPSS rescore
Show 71 more
  1. 2026-07-08 15:14 UTCEPSS rescore
  2. 2026-07-07 13:45 UTCEPSS rescore
  3. 2026-07-06 16:26 UTCEPSS rescore
  4. 2026-07-06 02:22 UTCEPSS rescore
  5. 2026-07-05 02:29 UTCEPSS rescore
  6. 2026-07-04 06:30 UTCEPSS rescore
  7. 2026-07-01 15:05 UTCEPSS rescore
  8. 2026-06-30 23:21 UTCEPSS rescore
  9. 2026-06-29 14:05 UTCEPSS rescore
  10. 2026-06-28 14:07 UTCEPSS rescore
  11. 2026-06-28 04:55 UTCEPSS rescore
  12. 2026-06-28 04:55 UTCEPSS rescore
  13. 2026-06-27 03:07 UTCEPSS rescore
  14. 2026-06-27 03:07 UTCEPSS rescore
  15. 2026-06-25 19:46 UTCOSV refresh
  16. 2026-06-25 13:49 UTCEPSS rescore
  17. 2026-06-24 14:04 UTCEPSS rescore
  18. 2026-06-24 14:04 UTCEPSS rescore
  19. 2026-06-23 21:32 UTCEPSS rescore
  20. 2026-06-23 21:32 UTCEPSS rescore
  21. 2026-06-22 14:25 UTCEPSS rescore
  22. 2026-06-22 14:25 UTCEPSS rescore
  23. 2026-06-21 14:56 UTCEPSS rescore
  24. 2026-06-21 01:59 UTCEPSS rescore
  25. 2026-06-21 01:58 UTCEPSS rescore
  26. 2026-06-19 19:25 UTCEPSS rescore
  27. 2026-06-18 17:52 UTCEPSS rescore
  28. 2026-06-18 17:52 UTCEPSS rescore
  29. 2026-06-17 17:52 UTCEPSS rescore
  30. 2026-06-17 17:52 UTCEPSS rescore
  31. 2026-06-16 17:52 UTCEPSS rescore
  32. 2026-06-16 17:52 UTCEPSS rescore
  33. 2026-06-15 17:47 UTCEPSS rescore
  34. 2026-06-14 23:17 UTCEPSS rescore
  35. 2026-06-13 22:59 UTCEPSS rescore
  36. 2026-06-13 22:59 UTCEPSS rescore
  37. 2026-06-13 22:59 UTCEPSS rescore
  38. 2026-06-12 23:11 UTCEPSS rescore
  39. 2026-06-12 23:11 UTCEPSS rescore
  40. 2026-06-10 22:18 UTCEPSS rescore
  41. 2026-06-10 13:21 UTCEPSS rescore
  42. 2026-06-08 14:16 UTCEPSS rescore
  43. 2026-06-08 14:16 UTCEPSS rescore
  44. 2026-06-08 09:28 UTCOSV refresh
  45. 2026-06-07 15:24 UTCEPSS rescore
  46. 2026-06-07 15:24 UTCEPSS rescore
  47. 2026-06-05 22:46 UTCEPSS rescore
  48. 2026-06-05 22:46 UTCEPSS rescore
  49. 2026-06-05 06:09 UTCEPSS rescore
  50. 2026-06-05 06:09 UTCEPSS rescore
  51. 2026-06-04 13:11 UTCEPSS rescore
  52. 2026-06-04 13:11 UTCEPSS rescore
  53. 2026-06-02 20:12 UTCEPSS rescore
  54. 2026-06-01 13:51 UTCEPSS rescore
  55. 2026-06-01 13:51 UTCEPSS rescore
  56. 2026-05-31 00:16 UTCEPSS rescore
  57. 2026-05-31 00:16 UTCEPSS rescore
  58. 2026-05-29 13:43 UTCEPSS rescore
  59. 2026-05-28 13:44 UTCEPSS rescore
  60. 2026-05-28 13:44 UTCEPSS rescore
  61. 2026-05-28 13:44 UTCEPSS rescore
  62. 2026-05-27 13:40 UTCEPSS rescore
  63. 2026-05-27 13:40 UTCEPSS rescore
  64. 2026-05-26 13:43 UTCEPSS rescore
  65. 2026-05-26 13:43 UTCEPSS rescore
  66. 2026-05-26 07:18 UTCEPSS rescore
  67. 2026-05-26 07:18 UTCEPSS rescore
  68. 2026-05-26 07:18 UTCEPSS rescore
  69. 2026-05-23 19:46 UTCEG score recompute
  70. 2026-05-23 19:46 UTCVendor advisory
  71. 2026-05-23 19:46 UTCGHSA enrichment

Frequently asked(5)

What is CVE-2024-50066?
CVE-2024-50066 is a high vulnerability published on October 23, 2024. In the Linux kernel, the following vulnerability has been resolved: mm/mremap: fix movenormalpmd/retractpagetables race In mremap(), movepagetables() looks at the type of the PMD entry and the specified address range to figure out by which method the next chunk of page table entries should be…
When was CVE-2024-50066 disclosed?
CVE-2024-50066 was first published in the National Vulnerability Database on October 23, 2024, with the most recent update on March 7, 2025. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2024-50066 actively exploited?
CVE-2024-50066 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 10.0% percentile likelihood of exploitation in the next 30 days — higher percentiles indicate greater predicted risk.
What is the CVSS score of CVE-2024-50066?
CVE-2024-50066 has a CVSS v3 base score of 7.0 (NVD).
How do I remediate CVE-2024-50066?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2024-50066, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

Explore the affected products and dependency analysis for CVE-2024-50066

Explore →

Is Your Infrastructure Affected by CVE-2024-50066?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.