lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2025052008-CVE-2025-37936-a210@gregkh>
Date: Tue, 20 May 2025 17:22:32 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...nel.org>
Subject: CVE-2025-37936: perf/x86/intel: KVM: Mask PEBS_ENABLE loaded for guest with vCPU's value.

From: Greg Kroah-Hartman <gregkh@...nel.org>

Description
===========

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 Linux kernel CVE team has assigned CVE-2025-37936 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 6.0 with commit c59a1f106f5cd4843c097069ff1bb2ad72103a67 and fixed in 6.1.138 with commit 160153cf9e4aa875ad086cc094ce34aac8e13d63
	Issue introduced in 6.0 with commit c59a1f106f5cd4843c097069ff1bb2ad72103a67 and fixed in 6.6.90 with commit 34b6fa11431aef71045ae5a00d90a7d630597eda
	Issue introduced in 6.0 with commit c59a1f106f5cd4843c097069ff1bb2ad72103a67 and fixed in 6.12.28 with commit 44ee0afc9d1e7a7c1932698de01362ed80cfc4b5
	Issue introduced in 6.0 with commit c59a1f106f5cd4843c097069ff1bb2ad72103a67 and fixed in 6.14.6 with commit 86aa62895fc2fb7ab09d7ca40fae8ad09841f66b
	Issue introduced in 6.0 with commit c59a1f106f5cd4843c097069ff1bb2ad72103a67 and fixed in 6.15-rc5 with commit 58f6217e5d0132a9f14e401e62796916aa055c1b

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2025-37936
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	arch/x86/events/intel/core.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/160153cf9e4aa875ad086cc094ce34aac8e13d63
	https://git.kernel.org/stable/c/34b6fa11431aef71045ae5a00d90a7d630597eda
	https://git.kernel.org/stable/c/44ee0afc9d1e7a7c1932698de01362ed80cfc4b5
	https://git.kernel.org/stable/c/86aa62895fc2fb7ab09d7ca40fae8ad09841f66b
	https://git.kernel.org/stable/c/58f6217e5d0132a9f14e401e62796916aa055c1b

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ