CVE-2024-35804

Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
17/05/2024
Last modified:
19/09/2025

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> KVM: x86: Mark target gfn of emulated atomic instruction as dirty<br /> <br /> When emulating an atomic access on behalf of the guest, mark the target<br /> gfn dirty if the CMPXCHG by KVM is attempted and doesn&amp;#39;t fault. This<br /> fixes a bug where KVM effectively corrupts guest memory during live<br /> migration by writing to guest memory without informing userspace that the<br /> page is dirty.<br /> <br /> Marking the page dirty got unintentionally dropped when KVM&amp;#39;s emulated<br /> CMPXCHG was converted to do a user access. Before that, KVM explicitly<br /> mapped the guest page into kernel memory, and marked the page dirty during<br /> the unmap phase.<br /> <br /> Mark the page dirty even if the CMPXCHG fails, as the old data is written<br /> back on failure, i.e. the page is still written. The value written is<br /> guaranteed to be the same because the operation is atomic, but KVM&amp;#39;s ABI<br /> is that all writes are dirty logged regardless of the value written. And<br /> more importantly, that&amp;#39;s what KVM did before the buggy commit.<br /> <br /> Huge kudos to the folks on the Cc list (and many others), who did all the<br /> actual work of triaging and debugging.<br /> <br /> base-commit: 6769ea8da8a93ed4630f1ce64df6aafcaabfce64

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.15.58 (including) 5.15.154 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.17.13 (including) 5.18 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.18.2 (including) 6.1.84 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (including) 6.6.24 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (including) 6.7.12 (excluding)
cpe:2.3:o:linux:linux_kernel:6.8:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.8:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.8:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.8:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.8:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.8:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.8:rc7:*:*:*:*:*:*