CVE-2025-40040

MEDIUMNVD 5.55.5
EchelonGraph scoreMEDIUM confidence

Score 5.5 from GitHub Security Advisory published 2025-10-28. NVD baseline CVSS 5.5; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa, nvd
Trending — 4 sources updated this weekElevated
5.5EG
EchelonGraph verdictMonitorLow exploitation likelihood right now — keep watching.
  • Lower severity and no public exploit yet
CISA-KEV: Not listedEPSS PROB: 0%CVSS: 5.5Exploit: Elevated riskExposed: 0

A fix is available — apply it.

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

mm/ksm: fix flag-dropping behavior in ksm_madvise

syzkaller discovered the following crash: (kernel BUG)

[ 44.607039] ------------[ cut here ]------------ [ 44.607422] kernel BUG at mm/userfaultfd.c:2067! [ 44.608148] Oops: invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN NOPTI [ 44.608814] CPU: 1 UID: 0 PID: 2475 Comm: reproducer Not tainted 6.16.0-rc6 #1 PREEMPT(none) [ 44.609635] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 [ 44.610695] RIP: 0010:userfaultfd_release_all+0x3a8/0x460

[ 44.617726] Call Trace: [ 44.617926] [ 44.619284] userfaultfd_release+0xef/0x1b0 [ 44.620976] __fput+0x3f9/0xb60 [ 44.621240] fput_close_sync+0x110/0x210 [ 44.622222] __x64_sys_close+0x8f/0x120 [ 44.622530] do_syscall_64+0x5b/0x2f0 [ 44.622840] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 44.623244] RIP: 0033:0x7f365bb3f227

Kernel panics because it detects UFFD inconsistency during userfaultfd_release_all(). Specifically, a VMA which has a valid pointer to vma->vm_userfaultfd_ctx, but no UFFD flags in vma->vm_flags.

The inconsistency is caused in ksm_madvise(): when user calls madvise() with MADV_UNMEARGEABLE on a VMA that is registered for UFFD in MINOR mode, it accidentally clears all flags stored in the upper 32 bits of vma->vm_flags.

Assuming x86_64 kernel build, unsigned long is 64-bit and unsigned int and int are 32-bit wide. This setup causes the following mishap during the &= ~VM_MERGEABLE assignment.

VM_MERGEABLE is a 32-bit constant of type unsigned int, 0x8000'0000. After ~ is applied, it becomes 0x7fff'ffff unsigned int, which is then promoted to unsigned long before the & operation. This promotion fills upper 32 bits with leading 0s, as we're doing unsigned conversion (and even for a signed conversion, this wouldn't help as the leading bit is 0). & operation thus ends up AND-ing vm_flags with 0x0000'0000'7fff'ffff instead of intended 0xffff'ffff'7fff'ffff and hence accidentally clears the upper 32-bits of its value.

Fix it by changing VM_MERGEABLE constant to unsigned long, using the BIT() macro.

Note: other VM_* flags are not affected: This only happens to the VM_MERGEABLE flag, as the other VM_* flags are all constants of type int and after ~ operation, they end up with leading 1 and are thus converted to unsigned long with leading 1s.

Note 2: After commit 31defc3b01d9 ("userfaultfd: remove (VM_)BUG_ON()s"), this is no longer a kernel BUG, but a WARNING at the same place:

[ 45.595973] WARNING: CPU: 1 PID: 2474 at mm/userfaultfd.c:2067

but the root-cause (flag-drop) remains the same.

[[email protected]: rust bindgen wasn't able to handle BIT(), from Miguel]

CVSS v3
5.5
EG Score
5.5(medium)
EG Risk
45(Track)
EG Risk 45/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
Severity55% × 45%
Exploitation40% × 40%
Automatability30% × 15%
Action: Routine — remediate on your standard cadence.
EPSS PROB
0%
EPSS %ILE
28%
KEV
Not listed

Published

October 28, 2025

Last Modified

August 5, 2026

Advisory Details (8)

Auto-updated Aug 2, 2026
No patch confirmed yet.
generic

mm/ksm: fix flag-dropping behavior in ksm_madvise - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/f04aad36a07cc17b7a5d5b9a2d386ce6fae63e93
generic

mm/ksm: fix flag-dropping behavior in ksm_madvise - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/b69f19244c2b6475c8a6eb72f0fb0d53509e48cd
generic

mm/ksm: fix flag-dropping behavior in ksm_madvise - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/ac50c6e0a8f91a02b681af81abb2362fbb67cc18
generic

mm/ksm: fix flag-dropping behavior in ksm_madvise - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/92b82e232b8d8b116ac6e57aeae7a6033db92c60
generic

mm/ksm: fix flag-dropping behavior in ksm_madvise - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/850f1ea245bdc0ce6a3fd36bfb80d8cf9647cb71
generic

mm/ksm: fix flag-dropping behavior in ksm_madvise - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/788e5385d0ff69cdba1cabccb9dab8d9647b9239
generic

mm/ksm: fix flag-dropping behavior in ksm_madvise - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/76385629f45740b7888f8fcd83bde955b10f61fe
generic

mm/ksm: fix flag-dropping behavior in ksm_madvise - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/41cb9fd904fe0c39d52e82dd84dc3c96b7aa9693

Patch Availability(16)

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.

All Vendor Advisories

(16)

Data Freshness Timeline

(refreshed 13× in last 7d / 44× 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.

Showing the most recent 100 of 109 total refreshes for this CVE.

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

Publicly available exploits

(1 reference)

Working exploit code is in the public domain (1 GitHub PoC). Defenders should treat patch urgency accordingly — public PoCs typically lead to mass-exploitation within 24-72 hours.

  • GitHub PoCSpiralBL0CK/CVE-2023-1206-CVE-2025-40040-CVE-2024-49882
    First seen Dec 1, 2025

    3 linux kernel bugs chains to do secure comm app using side channel to establish key and establish covert channe;

    Open source ↗

Frequently asked(5)

What is CVE-2025-40040?
CVE-2025-40040 is a medium vulnerability published on October 28, 2025. In the Linux kernel, the following vulnerability has been resolved: mm/ksm: fix flag-dropping behavior in ksm_madvise syzkaller discovered the following crash: (kernel BUG) [ 44.607039] ------------[ cut here ]------------ [ 44.607422] kernel BUG at mm/userfaultfd.c:2067! [ 44.608148] Oops: invalid…
When was CVE-2025-40040 disclosed?
CVE-2025-40040 was first published in the National Vulnerability Database on October 28, 2025, with the most recent update on August 5, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2025-40040 actively exploited?
CVE-2025-40040 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 0% probability of exploitation in the next 30 days, which ranks it in the top 72.3% of all scored CVEs.
What is the CVSS score of CVE-2025-40040?
CVE-2025-40040 has a CVSS v3 base score of 5.5 (NVD).
How do I remediate CVE-2025-40040?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2025-40040, 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-2025-40040

Explore →

Is Your Infrastructure Affected by CVE-2025-40040?

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