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

KVM: x86: Unconditionally recompute CR8 intercept on PPR update

The TPR_THRESHOLD field in the VMCS is used by VMX to induce VM exits
when the guest's virtual TPR falls under the specified threshold,
allowing KVM to inject previously masked interrupts.

KVM handles these VM exits in handle_tpr_below_threshold().
Commit eb90f3417a0c ("KVM: vmx: speed up TPR below threshold vmexits")
optimized this function by calling apic_update_ppr() instead of raising
KVM_REQ_EVENT. apic_update_ppr() then raises KVM_REQ_EVENT if there is
a pending, deliverable interrupt.

However, if there are no new interrupts pending, apic_update_ppr() does
not issue the request. Thus, kvm_lapic_update_cr8_intercept() and
vmx_update_cr8_intercept() are not called before VM entry, which results
in a high, stale TPR_THRESHOLD. This is problematic due to the following
sentence in 28.2.1.1 "VM-Execution Control Fields" in the SDM:

The following check is performed if the “use TPR shadow” VM-execution
control is 1 and the “virtualize APIC accesses” and “virtual-interrupt
delivery” VM-execution controls are both 0: the value of bits 3:0 of
the TPR threshold VM-execution control field should not be greater
than the value of bits 7:4 of VTPR.

This error condition is typically not observed when KVM runs on a bare
metal system because modern processors support APICv, which enables
virtual-interrupt delivery, and which KVM uses when possible. This
causes the processor to no longer generate TPR-below-threshold exits
and to no longer check TPR_THRESHOLD on entry. However, when running
on older platforms, or under nested virtualization on a hypervisor that
does not support virtual-interrupt delivery and enforces this check
(like Hyper-V) this can cause a VM entry failure with hardware error
0x7, as seen in [1].

Call kvm_lapic_update_cr8_intercept() if apic_update_ppr() does not
find a deliverable interrupt (and thus does not raise KVM_REQ_EVENT).
Remove calls to kvm_lapic_update_cr8_intercept() on paths that end up in
apic_update_ppr(), as they now become redundant. This ensures that any
path that updates the guest's PPR also figures out if KVM needs to wait
for a TPR change (using TPR_THRESHOLD on VMX or CR8 intercepts on SVM).
Published: 2026-07-25
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Linux kernel’s KVM subsystem relies on the guest’s priority preemption register (PPR) to trigger virtual interrupt deliveries. When the PPR changes, but no new interrupts are pending, the kernel should recompute the CR8 intercept so that the TPR threshold remains accurate. Because this recomputation was omitted, a stale, high TPR_THRESHOLD value accumulates. During a subsequent VM entry, the processor enforces the TPR‑shadow check and detects a mismatch, which causes the entry to fail with hardware error 0x7. The failure manifests as a crash of the virtual machine or, in some nested‑virtualization environments, the host. This flaw therefore constitutes a denial‑of‑service vulnerability affecting the VM’s availability. While the code paths and state change that trigger the bug are internal to KVM, they can be reached by a privileged or local attacker who can influence guest PPR updates. The description does not indicate any means for arbitrary code execution, and the required trigger sequence is non‑obvious, making accidental exploitation unlikely. The impact is limited to a VM entry failure; no data exposure or privilege escalation is provided by this issue. However, the fault may lead to service interruption for applications running inside affected guests and potentially churn traffic in environments relying on continuous VM uptime. Affected systems—All Linux kernel hosts employing KVM on x86 processors, particularly those with older CPUs or nested‑virtualization platforms (e.g., Hyper‑V) that enforce TPR shadow checks, could be impacted. The condition is specific to the kernel’s handling path when virtual‑interrupt delivery is disabled or unsupported. The CVSS base score of 5.5 classifies the vulnerability as moderate severity. The EPSS score of < 1 % and its absence from the CISA KEV catalog suggest a low likelihood of exploitation in the wild. Nonetheless, because a stale threshold can lead to unexpected crashes in production, remedial action is advised.

Affected Systems

All Linux kernel hosts with the KVM virtualization stack on x86 processors are affected, especially those running on older hardware or in nested environments that disable virtual‑interrupt delivery, such as Hyper‑V. Hosts retaining the legacy path without updating the CR8 intercept logic are vulnerable; version information for the affected kernel releases is not enumerated in the advisory.

Risk and Exploitability

The EPSS score of < 1 % and the absence from KEV indicate a low probability of observed exploitation. The CVSS score of 5.5 reflects moderate severity, dominated by a denial‑of‑service impact. The attack requires a precise internal state transition—altering the guest’s PPR without triggering an event—making exploitation difficult from a remote context. As such, the overall risk is moderate but mitigable by patching to incorporate the corrected CR8 intercept logic.

Generated by OpenCVE AI on August 5, 2026 at 01:15 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a release that includes commit eb90f3417a0c and the corrected CR8 intercept logic.
  • If upgrading immediately is not possible, apply the distribution’s backport or rebuild the KVM module with the latest patch level.
  • When an upgrade cannot be performed, run the host on hardware that supports APICv or avoid nested‑virtualization environments that enforce TPR‑shadow checks.

Generated by OpenCVE AI on August 5, 2026 at 01:15 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 05 Aug 2026 01:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-864

Wed, 05 Aug 2026 00:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-20
CWE-759

Thu, 30 Jul 2026 12:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Low


Sun, 26 Jul 2026 01:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-20
CWE-759

Sat, 25 Jul 2026 09:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Unconditionally recompute CR8 intercept on PPR update The TPR_THRESHOLD field in the VMCS is used by VMX to induce VM exits when the guest's virtual TPR falls under the specified threshold, allowing KVM to inject previously masked interrupts. KVM handles these VM exits in handle_tpr_below_threshold(). Commit eb90f3417a0c ("KVM: vmx: speed up TPR below threshold vmexits") optimized this function by calling apic_update_ppr() instead of raising KVM_REQ_EVENT. apic_update_ppr() then raises KVM_REQ_EVENT if there is a pending, deliverable interrupt. However, if there are no new interrupts pending, apic_update_ppr() does not issue the request. Thus, kvm_lapic_update_cr8_intercept() and vmx_update_cr8_intercept() are not called before VM entry, which results in a high, stale TPR_THRESHOLD. This is problematic due to the following sentence in 28.2.1.1 "VM-Execution Control Fields" in the SDM: The following check is performed if the “use TPR shadow” VM-execution control is 1 and the “virtualize APIC accesses” and “virtual-interrupt delivery” VM-execution controls are both 0: the value of bits 3:0 of the TPR threshold VM-execution control field should not be greater than the value of bits 7:4 of VTPR. This error condition is typically not observed when KVM runs on a bare metal system because modern processors support APICv, which enables virtual-interrupt delivery, and which KVM uses when possible. This causes the processor to no longer generate TPR-below-threshold exits and to no longer check TPR_THRESHOLD on entry. However, when running on older platforms, or under nested virtualization on a hypervisor that does not support virtual-interrupt delivery and enforces this check (like Hyper-V) this can cause a VM entry failure with hardware error 0x7, as seen in [1]. Call kvm_lapic_update_cr8_intercept() if apic_update_ppr() does not find a deliverable interrupt (and thus does not raise KVM_REQ_EVENT). Remove calls to kvm_lapic_update_cr8_intercept() on paths that end up in apic_update_ppr(), as they now become redundant. This ensures that any path that updates the guest's PPR also figures out if KVM needs to wait for a TPR change (using TPR_THRESHOLD on VMX or CR8 intercepts on SVM).
Title KVM: x86: Unconditionally recompute CR8 intercept on PPR update
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-07-25T08:52:05.119Z

Reserved: 2026-07-19T15:36:31.793Z

Link: CVE-2026-64513

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-07-25T10:17:37.510

Modified: 2026-07-25T10:17:37.510

Link: CVE-2026-64513

cve-icon Redhat

Severity : Low

Publid Date: 2026-07-25T00:00:00Z

Links: CVE-2026-64513 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-05T01:30:17Z

Weaknesses