PatchSiren cyber security CVE debrief
CVE-2026-31397 Linux CVE debrief
CVE-2026-31397 affects the Linux kernel’s huge-page migration path. The bug is in move_pages_huge_pmd(), where handling of huge zero pages could either pass a NULL folio into PMD construction or rebuild a destination PMD in a way that drops special PMD state. Depending on memory configuration, this can result in a NULL dereference or a bogus PMD entry that points at non-existent physical memory and can corrupt reference counting. NVD lists the issue as HIGH severity with local, low-privilege attack requirements and impact to confidentiality, integrity, and availability.
- Vendor
- Linux
- Product
- Unknown
- CVSS
- HIGH 7.8
- CISA KEV
- Not listed in stored evidence
- Original CVE published
- 2026-04-03
- Original CVE updated
- 2026-07-24
- Advisory published
- 2026-04-03
- Advisory updated
- 2026-07-24
Who should care
Linux kernel maintainers, distribution security teams, and administrators of systems running affected kernel versions. This is especially relevant in environments that allow untrusted local users or multi-tenant workloads, because the CVSS vector requires local access with low privileges.
Technical summary
The vulnerable code path is mm/huge_memory: move_pages_huge_pmd(), which handles UFFDIO_MOVE for both normal transparent huge pages and huge zero pages. In the huge zero page branch, src_folio was explicitly NULL and later used in folio_mk_pmd(NULL, pgprot), which could produce a bogus PFN under SPARSEMEM_VMEMMAP or dereference NULL on other memory models. The issue also affected PMD metadata: reconstructing the destination PMD from the folio could drop pmd_special() state on architectures with CONFIG_ARCH_HAS_PTE_SPECIAL, causing vm_normal_page_pmd() to misclassify the moved huge zero PMD as normal memory and corrupt refcounts. The resolved approach uses page_folio(src_page) to obtain the valid huge zero folio and derives the destination entry from src_pmdval after pmdp_huge_clear_flush(), preserving special PMD handling. The CVE description and NVD metadata tie the issue to CWE-476 (NULL Pointer Dereference).
Defensive priority
High. The flaw is local and requires low privileges, but it affects a kernel memory-management path with potential for crash, memory corruption, and high-impact confidentiality/integrity/availability consequences. Prioritize patching affected kernels in multi-user or multi-tenant systems and any fleet that exposes local shell or workload execution to less-trusted users.
Recommended defensive actions
- Apply the vendor or upstream kernel fixes referenced by the stable git patches.
- Verify whether your running kernel is within the affected ranges listed by NVD: 6.16 through 6.18.20, 6.19 through 6.19.10, and early 7.0 release candidates noted in the record.
- Backport the fix through your distribution’s kernel package if you cannot move immediately to an unaffected release.
- Reboot into the patched kernel after update and confirm the running kernel build matches the corrected package.
- If you operate multi-user systems, treat this as a priority local privilege-escalation hardening item and accelerate patch rollout.
- Monitor kernel advisories from your distribution for any additional backported build identifiers or rollout guidance.
Evidence notes
Source description states the bug is in mm/huge_memory: fix use of NULL folio in move_pages_huge_pmd(), affecting huge zero page handling in UFFDIO_MOVE. It explicitly notes that passing NULL into folio_mk_pmd() can create a bogus PFN under SPARSEMEM_VMEMMAP or a NULL dereference on other memory models, and that reconstructing the PMD can drop special PMD state. NVD marks the CVE as analyzed, HIGH severity, CVSS 7.8, AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, with CWE-476. PublishedAt is 2026-04-03T16:16:38.093Z and ModifiedAt is 2026-05-20T13:06:35.743Z; the patch references are official kernel.git stable links provided in the source metadata.
Sources and references
Verified primary and authoritative sources
-
CVE-2026-31397 CVE Program record
Publisher, destination, and source semantics verified
URL: https://www.cve.org/CVERecord?id=CVE-2026-31397
CVE Program - Official CVE Program record with source-provided CVE metadata.
-
CVE-2026-31397 NVD vulnerability detail
Publisher, destination, and source semantics verified
URL: https://nvd.nist.gov/vuln/detail/CVE-2026-31397
NIST National Vulnerability Database - Official NIST NVD detail page and source-specific vulnerability assessment.
Supplemental references
-
Mitigation or vendor reference
Unverified legacy reference
URL: https://git.kernel.org/stable/c/e3133d0986dc5a231d5419167dbac65312b28b41
416baaa9-dc9f-4396-8d5f-8c081fb06d67 - Patch
-
Mitigation or vendor reference
Unverified legacy reference
URL: https://git.kernel.org/stable/c/f3caaee0f9e489fd2282d4ce45791dc8aed2da62
416baaa9-dc9f-4396-8d5f-8c081fb06d67 - Patch
-
Mitigation or vendor reference
Unverified legacy reference
URL: https://git.kernel.org/stable/c/fae654083bfa409bb2244f390232e2be47f05bfc
416baaa9-dc9f-4396-8d5f-8c081fb06d67 - Patch
Methodology and review provenance
AI-assisted synthesis based on stored public vulnerability evidence. System validation, approval state, and publication status do not by themselves establish human review of this revision. PatchSiren helps prioritize defensive review and does not prove exposure or remediation on any system.