KVM: x86/mmu: Check write tracking in all address spaces
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.1.187, 6.6.156, 6.12.108, 6.18.49, 7.1.13
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: KVM: x86/mmu: Check write tracking in all address spaces kvm_gfn_is_write_tracked() checks only the supplied memslot, but page tracking is per-address-space and shadow pages are shared across all address spaces. With SMM, a GFN can therefore be write-tracked in one address space and appear untracked through the other. Check the supplied slot first, then the slot for the other address space. This ensures all callers honor write tracking regardless of the active address space. In particular, it prevents mmu_try_to_unsync_pages() from marking an upper-level shadow page unsync and eventually triggering the BUG in pte_list_remove(). [invert direction of the conditional. - Paolo]
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 699023e239658e62da6f42f47d31b54788521ec1 · fixed in 09aa68552d2542cc6c23edd1568ac265dc5d886f; From 699023e239658e62da6f42f47d31b54788521ec1 · fixed in 429b6f43b4d8c98988fdca99e02dc156134e3d77; From 699023e239658e62da6f42f47d31b54788521ec1 · fixed in d8636c8f9f95d0fd1e2f6f1cad0d5757aa6f212a; From 699023e239658e62da6f42f47d31b54788521ec1 · fixed in c0a9bd5fca0b5f2dea32b0fc31350e71e8648112; From 699023e239658e62da6f42f47d31b54788521ec1 · fixed in ec8fcaf354c1cbb36755d48e9f5a00c9591349e5; From 699023e239658e62da6f42f47d31b54788521ec1 · fixed in 0f38453cdb2e17566ccb7c0f3dabd5bd21caca26
- Linux Linux
4.2
- KernelLinux
From 4.2.0 · fixed in 6.1.187; From 6.2.0 · fixed in 6.6.156; From 6.7.0 · fixed in 6.12.108; From 6.13.0 · fixed in 6.18.49; From 6.19.0 · fixed in 7.1.13