CVE-2025-37936

CVE-2025-37936

High · published May 20, 2025

CVSS v3.1
8.7
EPSS
0%
Percentile
11.7
In the wild
Unconfirmed
What it is

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

perf/x86/intel: KVM: Mask PEBS_ENABLE loaded for guest with vCPU's value.

When generating the MSR_IA32_PEBS_ENABLE value that will be loaded on

VM-Entry to a KVM guest, mask the value with the vCPU's desired PEBS_ENABLE

value. Consulting only the host kernel's host vs. guest masks results in

running the guest with PEBS enabled even when the guest doesn't want to use

PEBS. Because KVM uses perf events to proxy the guest virtual PMU, simply

looking at exclude_host can't differentiate between events created by host

userspace, and events created by KVM on behalf of the guest.

Running the guest with PEBS unexpectedly enabled typically manifests as

crashes due to a near-infinite stream of #PFs. E.g. if the guest hasn't

written MSR_IA32_DS_AREA, the CPU will hit page faults on address '0' when

trying to record PEBS events.

The issue is most easily reproduced by running `perf kvm top` from before

commit 7b100989b4f6 ("perf evlist: Remove __evlist__add_default") (after

which, `perf kvm top` effectively stopped using PEBS). The userspace side

of perf creates a guest-only PEBS event, which intel_guest_get_msrs()

misconstrues a guest-*owned* PEBS event.

Arguably, this is a userspace bug, as enabling PEBS on guest-only events

simply cannot work, and userspace can kill VMs in many other ways (there

is no danger to the host). However, even if this is considered to be bad

userspace behavior, there's zero downside to perf/KVM restricting PEBS to

guest-owned events.

Note, commit 854250329c02 ("KVM: x86/pmu: Disable guest PEBS temporarily

in two rare situations") fixed the case where host userspace is profiling

KVM *and* userspace, but missed the case where userspace is profiling only

KVM.

The record
Technical detail
CVSS v3.1
8.7 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00219 · 11.7th percentile
Published
2025-05-20T20:15Z
Affected products (9)
ProductVersionsFixed in
linux/linux_kernel≥ 6.0, < 6.1.1386.1.138
linux/linux_kernel≥ 6.2, < 6.6.906.6.90
linux/linux_kernel≥ 6.7, < 6.12.286.12.28
linux/linux_kernel≥ 6.13, < 6.14.66.14.6
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
debian/debian_linuxall versions—
References (6)
EPSS history
Timeline
  • 20 MAY 15:22Z
    perf/x86/intel: KVM: Mask PEBS_ENABLE loaded for guest with vCPU's value.
    cvelistv5