Skip to main content

Linux Kernel EUVDEUVD-2026-80513

| CVE-2026-89913 HIGH
2026-09-16 Linux GHSA-x7mw-48gf-2rxm
8.8
CVSS 3.1 · Vendor: Linux
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Attacker controls a guest vCPU on arm64 KVM host
  2. Delivery
    Drive cached LPI injection and ITS DISCARD concurrently
  3. Exploit
    Race host vgic_v3_save_pending_tables iteration
  4. Execution
    Free struct vgic_irq via kfree_rcu during iteration
  5. Persist
    Host dereferences stale pointer
  6. Impact
    Host-kernel memory corruption and crash (DoS)

Vulnerability Assessment

Exploitation Conditions

Requires an arm64 KVM host with vGICv3 emulation and LPI/ITS support, and a local guest with vCPU-level access (PR:L) able to drive ITS operations. Concretely, the attacker must trigger the irqfd cached injection path (vgic_its_check_cache) together with a guest ITS DISCARD that drops the final LPI reference, precisely while the host is executing vgic_v3_save_pending_tables() - a code path exercised during vGIC state save/migration. Exploitation is limited by this tight timing window (a genuine race, hence AC:H), by requiring GICv3-with-LPI configuration rather than GICv2, and by needing the save-pending-tables operation to be in flight; it is not reachable against a host that never performs the concurrent save path.

Impact

This is a use-after-free triggered by a race condition (CWE-416/CWE-362) in the arm64 KVM vGICv3 code path vgic_v3_save_pending_tables(), which iterates dist->lpi_xa under only transient RCU coverage and dereferences a struct vgic_irq that a concurrent irqfd cached-injection path plus a guest ITS DISCARD can free via kfree_rcu(). The vendor CVSS is 8.8 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H), but several metrics look inflated for a narrow teardown/injection race: AC:L is questionable because triggering the stale-pointer dereference requires precisely interleaving the LPI reference-drop with an in-progress pending-table save (which itself typically runs only during vGIC state save/migration), so AC:H is more defensible. The confidentiality/integrity impact is also overstated - the practical outcome of a freed vgic_irq dereference is host-kernel memory corruption and crash (DoS-dominant), not a reliable read/write primitive, so C:H/I:H are optimistic. S:C is legitimate: a guest vCPU context influences and corrupts host-kernel state, crossing a security boundary. There is no KEV listing, no public POC, and no EPSS signal provided, so despite the high vendor score this is best treated as a real but lower-urgency host-stability/DoS issue affecting a specific platform (arm64 KVM with GICv3 LPIs/ITS), not a broadly weaponizable RCE. Note the input Tag 'Code Injection' conflicts with the actual vulnerability class (a UAF/race, not code injection) and the CWE field is N/A - verify classification with the kernel advisory.

Exploit ScenarioDerived

A malicious or compromised guest on an arm64 KVM host with GICv3 emulation drives ITS operations (cached MSI/LPI injection via irqfd combined with an ITS DISCARD that drops the final LPI reference) while the host concurrently saves vGIC pending tables (e.g., during live migration or vGIC state save). Winning the race causes vgic_v3_save_pending_tables() to dereference and perform guest-memory accesses through a freed struct vgic_irq, corrupting host-kernel memory and crashing the host. No public exploit is identified at time of analysis, and the required interleaving makes reliable exploitation difficult.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 16, 2026

A use-after-free race in the arm64 KVM vGICv3 code path of the Linux kernel (vgic_v3_save_pending_tables) allows a locally authenticated guest with vCPU-level access to trigger a dangling-pointer dereference against host kernel memory. The flaw requires an arm64 KVM host configured with GICv3 LPI/ITS support, where a concurrent irqfd cached-injection plus a guest ITS DISCARD can free an LPI that the pending-table save loop still holds via a stale xarray iterator pointer; the practical outcome is a host-side crash/denial of service with limited integrity impact rather than a clean, reliable privilege escalation, and exploitation depends on a tight timing window (assessed AV:L/AC:H/PR:L, S:C, C:N/I:L/A:H). Vendor patches are available in Linux 6.18.51, 7.2.5, and 7.3-rc1; no public exploit code and no confirmed active exploitation have been identified at time of analysis.

RemediationAI

Apply the vendor-released patch by upgrading to Linux 6.18.51, 7.2.5, or 7.3-rc1 (or any later stable release containing the fix commits 7631f95297560157d3a9283cb999e3be00103348, d3a2d20b7248ea67465af1cf79c79f90ff70926c, or f5b8f203bfc07a5a257dff859e66d2c500f9f509); distribution kernels should be updated to the corresponding backport once available. If immediate patching is not possible, reduce exposure by running affected guests on hosts that do not use GICv3 LPI/ITS configurations or pinning/serializing vGIC state save operations (migration, snapshotting) so that vgic_v3_save_pending_tables() does not run concurrently with guest ITS traffic - the trade-off is reduced migration flexibility and no protection against a save that overlaps unavoidable ITS activity. Because the trigger requires local guest vCPU-level access (PR:L) and a tight race window, treating guests as untrusted and avoiding running untrusted tenants on arm64 KVM hosts without the fix is a meaningful compensating control, though it sacrifices multi-tenancy density. Kernel hardening such as hardened usercopy or SLUB freelist randomization may raise exploitation difficulty but does not remove the vulnerable dereference, and disabling KVM/arm64 ITS on hosts that do not require MSI passthrough fully avoids the code path at the cost of losing ITS-backed device assignment.

Affected VersionsENISA

Linux 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 <f5b8f203bfc07a5a257dff859e66d2c500f9f509
Linux 0 <7.2.5
Linux 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 <7631f95297560157d3a9283cb999e3be00103348
Linux patch: 7.2.5
Linux 0 <6.18.51
Linux 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 <d3a2d20b7248ea67465af1cf79c79f90ff70926c
Linux patch: 6.18.51
Linux patch: 7.3-rc1

Affected Packages

euvd linux fix: 6.18.51, 7.2.5

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerable code lives in the arm64 KVM virtual GIC (vGIC) implementation, specifically the ITS/LPI support that maps MSIs to LPIs (Locality-specific Peripheral Interrupts) tracked in the per-VM xarray dist->lpi_xa. vgic_v3_save_pending_tables() is invoked when vGIC state is saved (for example during VM migration or state capture) and walks lpi_xa with xa_for_each(), which only guarantees RCU read-side coverage for the pointer lookup itself, not for the work done inside the loop body (reading struct vgic_irq fields and performing guest memory accesses). Because the loop did not take a stable reference, a concurrent path can drop the last reference: vgic_its_inject_cached_translation() acquires a transient LPI reference through vgic_its_check_cache() without holding kvm->lock, vcpu->mutex, config_lock, or its_lock, and if a guest-issued ITS DISCARD simultaneously drops the cache and ITE references under its_lock, the transient injection reference becomes the final one; vgic_put_irq() then erases the LPI from lpi_xa and releases it through kfree_rcu(), so the saver can dereference memory after the RCU grace period has elapsed. The upstream fix re-fetches each iterated LPI with vgic_get_irq() to hold a stable reference and releases it with vgic_put_irq() on every exit path, mirroring the pattern already used by other lpi_xa iterators in the vGIC ITS code. This is a combined use-after-free (CWE-416) and race condition (CWE-362) class issue, and it only manifests on hosts that actually run the concurrent save path with GICv3-with-LPI configuration; GICv2 hosts and hosts that never save pending tables are not reachable.

Know when KVM gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Linux) PRIMARY 8.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 6.4 MEDIUM

Guest vCPU access is local with low privilege (AV:L/PR:L); the timing-dependent race gives AC:H; guest-to-host corruption crosses scope (S:C); impact is host crash/DoS (A:H) with minor integrity, no reliable confidentiality.

3.1 AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:L/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N
SUSE 5.8 MEDIUM
AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H
Red Hat 4.7 MEDIUM

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

4
CVSS changed
Sep 16, 2026 - 15:22 NVD
8.8 (HIGH)
Patch available
Sep 16, 2026 - 11:03 EUVD
CVE Published
Sep 16, 2026 - 10:32 cve.org
HIGH 8.8
CVE Published
Sep 16, 2026 - 10:32 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

KVM: arm64: vgic-v3: take an LPI reference in vgic_v3_save_pending_tables

vgic_v3_save_pending_tables() iterates dist->lpi_xa using xa_for_each() and dereferences the returned struct vgic_irq in the loop body without holding a reference on the LPI.

The xarray iterator only provides temporary RCU coverage while looking up the current entry. That is not sufficient for this loop body, which reads fields from struct vgic_irq and performs guest memory accesses before the iteration completes.

A concurrent path can trigger this race: the irqfd cached injection path (vgic_its_inject_cached_translation) obtains a transient LPI reference via vgic_its_check_cache() without holding kvm->lock, vcpu->mutex, config_lock, or its_lock. If guest ITS DISCARD then drops the cache and ITE references under its_lock, the transient inject reference may become the final one. When vgic_put_irq() drops it, the LPI is erased from lpi_xa and freed via kfree_rcu(). Meanwhile, vgic_v3_save_pending_tables() may still hold a stale pointer obtained from the xarray iterator and dereference it after the RCU grace period completes.

Fix this by re-fetching each iterated LPI via vgic_get_irq(), which takes a stable reference, and dropping it with vgic_put_irq() on all paths. This matches the pattern already used by other lpi_xa iterators in the vgic ITS code.

Executive ViewAI

Why It Matters

A use-after-free vulnerability in the Linux kernel's arm64 KVM vGICv3 code path can allow a locally authenticated guest with vCPU-level access to crash the host, disrupting all virtual machines on affected systems. Organizations running arm64 Linux hosts with KVM and GICv3 LPI/ITS support-especially multi-tenant or cloud environments-face availability risks. Vendor patches are available in Linux 6.18.51, 7.2.5, and 7.3-rc1, and no public exploit identified at time of analysis.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Medium
arm64 KVM hosts using GICv3 LPI/ITS emulation; common in ARM server virtualization
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in KVM

View all
CVE-2026-27211 CRITICAL
10.0 Feb 21

Arbitrary host file exfiltration from Cloud Hypervisor VMM versions 34.0-50.0. CVSS 10.0. Patch available.

CVE-2026-89930 CRITICAL
9.3 Sep 16

Incorrect handling of queued local TLB flushes in the Linux kernel's KVM nested-VMX (nVMX) implementation can leave stal

CVE-2026-89918 CRITICAL
9.3 Sep 16

Address-rollover bug in the Linux kernel's KVM/arm64 TLB-by-VA invalidation path causes the hypervisor to silently skip

CVE-2026-89916 CRITICAL
9.3 Sep 16

Race conditions in the arm64 KVM path that invalidates VNCR translations can leave a stale stage-1 TLB entry installed f

CVE-2026-89915 CRITICAL
9.3 Sep 16

Missed TLB invalidations in the arm64 KVM nested-virtualization path of the Linux kernel can leave stale translations fo

CVE-2026-89914 CRITICAL
9.3 Sep 16

Range-based TLB invalidation in the arm64 KVM hypervisor of the Linux kernel is computed against the wrong address range

CVE-2026-89959 HIGH
8.8 Sep 16

The s390 vfio-ap mediated device (mdev) driver in the Linux kernel fails to actually revoke crypto control-domain access

CVE-2026-89957 HIGH
8.8 Sep 16

Stale hardware access to unplugged crypto resources in Linux KVM guests on IBM Z (s390) stems from a logic error in the

CVE-2026-89932 HIGH
8.8 Sep 16

Stale TLB entries can be reused by an L2 guest in the Linux kernel's KVM nested virtualization (nVMX) implementation on

CVE-2026-89929 HIGH
8.8 Sep 16

Linux kernel's KVM nested-VMX (nVMX) emulation can leave stale L2 guest TLB entries on a physical CPU, because KVM execu

CVE-2026-89908 HIGH
8.8 Sep 16

On LoongArch hosts running KVM, a memory-slot update that changes only flags (KVM_MR_FLAGS_ONLY, most notably toggling K

CVE-2026-89960 HIGH
8.8 Sep 16

A use-after-free (CWE-416) in the Linux kernel's s390/vfio-ap AP crypto passthrough driver allows a local attacker with

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy