Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRun malicious guest on RISC-V KVM host
-
DeliveryArm vCPU timer via SBI TIME
-
ExploitRequest shutdown via SBI/SRST
-
ExecutionVMM destroys VM racing hrtimer callback
-
ImpactUse-after-free write in host kernel vCPU
Vulnerability Assessment
| Exploitation Conditions | Requires a RISC-V host running KVM with the non-Sstc timer path (hardware lacking the Sstc extension, so the kernel emulates the timer via hrtimer). The attacker must be able to run a guest VM and, inside it, arm the vCPU timer via SBI TIME and then request shutdown via SBI legacy shutdown or SRST. The teardown side of the race is supplied by a VMM that honors KVM_EXIT_SYSTEM_EVENT and destroys the VM; no post-launch host ioctl is needed. Limiting factors that reduce realistic risk: it is a timing-sensitive race (natural reproduction reached the vulnerable ordering in only 12 of 200 trace-build runs and 0 of 1,500 stock-kernel stress runs without an injected delay), it is confined to the RISC-V architecture and the non-Sstc configuration, and it requires guest-execution capability rather than any network access despite the supplied PR:N. |
| Impact | Signals conflict sharply here. The input CVSS base score is 9.3 (CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H), driven mainly by the scope change (guest-to-host) and full H/H/H impact, and the vuln.today decision label is act_now. Against that, EPSS is only 0.17% (6th percentile), there is no CISA KEV listing, and no public exploit identified at time of analysis - the only references are the six upstream git.kernel.org fix commits, not exploit code. The description itself undercuts the AC:L/PR:N metrics: this is a timing-sensitive use-after-free race, not a deterministic remote bug. The author reports it took an injected mdelay(1000) to reproduce reliably; a no-delay trace build reached the vulnerable ordering in only 12 of 200 runs, and 1,500 stock-kernel stress iterations produced no KASAN report at all. Exploitation also requires the attacker to control a guest VM on a RISC-V KVM host using the non-Sstc timer path, plus a VMM that honors KVM_EXIT_SYSTEM_EVENT and destroys the VM - so despite PR:N in the supplied vector, this is not a classic unauthenticated network flaw. Conflict to flag explicitly: the act_now label and 9.3 CVSS point to high urgency, but low EPSS, absent KEV, no public exploit, a timing-sensitive local race, and a niche RISC-V-only code path all indicate low real-world widespread-exploitation risk. For the small population running RISC-V KVM hosts with untrusted guests this is a genuine host-memory-corruption priority; for everyone else it is a high-CVSS issue with limited practical exposure. Note also the supplied CVSS vector's AV:L/AC:L/PR:N is questionable: a guest-triggered race should carry higher attack complexity and some privilege - verify against vendor/upstream scoring. |
| Exploit ScenarioDerived | A threat actor who controls a guest VM on a RISC-V KVM host (using the non-Sstc timer emulation path) arms the vCPU timer via SBI TIME and then requests shutdown through SBI legacy shutdown or SRST; a VMM that honors KVM_EXIT_SYSTEM_EVENT destroys the VM while the hrtimer callback is still executing. Because teardown can observe next_set as false and skip hrtimer_cancel(), kvm_destroy_vcpus() frees the vCPU before the callback writes into it, yielding a slab use-after-free write in host kernel memory (confirmed by KASAN) that can crash or corrupt the host. No public exploit code exists - only upstream fix commits - and success is timing-sensitive, so the window is narrow without artificial delay. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 24, 2026
A use-after-free in the Linux kernel's RISC-V KVM guest-timer teardown path lets a guest that arms its vCPU timer via SBI TIME and then requests shutdown via SBI legacy shutdown or SRST race the hrtimer callback against VM destruction, so that kvm_destroy_vcpus() frees the vCPU while kvm_riscv_vcpu_hrtimer_expired() is still calling kvm_riscv_vcpu_set_interrupt() and writing to it. Only RISC-V hosts that emulate the vCPU timer with the non-Sstc hrtimer path, and VMMs that honour KVM_EXIT_SYSTEM_EVENT by destroying the VM, provide both sides of the race; hosts whose CPUs expose the Sstc extension and use the other timer path are not affected by this code. The supplied CVSS of 9.3 (AC:L, PR:N) is contradicted by our assessment of CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H: the race is timing-sensitive (the vulnerable ordering appeared in 12 of 200 trace-build runs and 0 of 1,500 stock-kernel stress runs without an injected delay) and requires the ability to run a guest, so EPSS is low at 0.17% (6th percentile) and no public exploit has been identified at time of analysis; CISA KEV does not list this CVE.
RemediationAI
Vendor-released patch: fixed in Linux 6.1.189, 6.6.158, 6.12.112, 6.18.55, 7.2.9 and 7.3-rc5; apply the corresponding stable commit from the references (for example https://git.kernel.org/stable/c/9bdbae64ae0dab93041ebc57ec4e93def793fc2d and https://git.kernel.org/stable/c/2af03b606aadaaeb386658ef798c79bdcdef87c1) or take the upstream change that always calls hrtimer_cancel() for an initialised timer before freeing the vCPU. Until the kernel is updated, the practical controls follow directly from the exploitation prerequisites: do not run untrusted RISC-V guests on non-Sstc hosts, because the vulnerable branch exists only where the kernel emulates the vCPU timer with an hrtimer and the guest can supply both the SBI TIME arming and the SBI shutdown/SRST request; alternatively restrict which local users or services can open /dev/kvm on those hosts, since the assessed vector requires the ability to launch a guest (PR:L) even though the supplied CVSS claimed PR:N. Preferring hosts whose CPUs expose the Sstc extension avoids the non-Sstc path entirely, at the cost of requiring that hardware capability and leaving mixed fleets exposed. Note that the teardown side of the race is supplied by a VMM that honours KVM_EXIT_SYSTEM_EVENT and destroys the VM, so VMM configuration is relevant to exposure, but the kernel fix is the complete remedy; the vendor did not document a VMM-side workaround that removes the race.
Affected VersionsENISA
Affected Packages
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
On RISC-V hosts without the Sstc (Sstc = stimecmp-based timer) extension, KVM emulates the guest's timer in software using an hrtimer; kvm_riscv_vcpu_timer_cancel() is meant to stop that callback during teardown, but it only calls hrtimer_cancel() when the vCPU's next_set flag is true, and the callback sets next_set = false before its final uses of the enclosing vCPU. Teardown that observes next_set as false therefore skips hrtimer_cancel(), and kvm_destroy_vcpus() via kvm_arch_destroy_vm() and kvm_destroy_vm() can free the KVM_CREATE_VCPU-allocated object while the callback is still between clearing the flag and entering kvm_riscv_vcpu_set_interrupt(). The observed failure on upstream 62cc90241548 was a KASAN slab-use-after-free reported in do_raw_spin_lock (write of size 4), with the free stack running up through __fput, i.e. the VMM closing the KVM fd after handling KVM_EXIT_SYSTEM_EVENT. The guest-side trigger is standard SBI behaviour (arm the timer with SBI TIME, request shutdown with SBI legacy shutdown or SRST) and no post-launch host ioctl is required to arm or request teardown. No CWE identifier was supplied in the source data; the defect class is a use-after-free caused by missing synchronisation with an in-flight timer callback. The upstream fix always invokes hrtimer_cancel() for an initialised timer, still returning -EINVAL when the timer is no longer set but only after synchronising with a running callback; with the fix, hrtimer_cancel() blocked for the full widened callback window before vCPU destruction and KASAN reported no error across 100 fixed-and-widened runs and 200 fix-only timing-sweep runs. The 'Information Disclosure' tag carried in the intelligence feed understates the assessed impact (C:H/I:H/A:H) - the primitive is memory corruption in the host kernel.
Know when the next one hits your stack
- 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
AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Guest-triggered, timing-sensitive race justifies AC:H; running a guest requires some privilege (PR:L); guest-to-host UAF is a scope change (S:C) enabling host memory corruption (C/I/A:H).
Primary rating from Vendor (Linux).
CVSS VectorVendor: Linux
Lifecycle Timeline
4DescriptionCVE.org
In the Linux kernel, the following vulnerability has been resolved:
RISC-V: KVM: Synchronize hrtimer callback during teardown
The non-Sstc hrtimer callback clears next_set before its final uses of the enclosing vCPU. If teardown observes next_set as false while the callback is still running, kvm_riscv_vcpu_timer_cancel() skips hrtimer_cancel() and kvm_destroy_vcpus() can free the vCPU before the callback enters kvm_riscv_vcpu_set_interrupt().
A guest can arm the timer with SBI TIME and request shutdown with SBI legacy shutdown or SRST. A VMM that honors KVM_EXIT_SYSTEM_EVENT and destroys the VM supplies the teardown side of the race; no post-launch host ioctl is needed to arm or request teardown.
On upstream master 62cc90241548, generic KASAN reported:
BUG: KASAN: slab-use-after-free in do_raw_spin_lock Write of size 4 at addr ff60000005e58898
kvm_riscv_vcpu_set_interrupt kvm_riscv_vcpu_hrtimer_expired __hrtimer_run_queues hrtimer_interrupt
The object was allocated by KVM_CREATE_VCPU and freed concurrently by:
kvm_destroy_vcpus kvm_arch_destroy_vm kvm_destroy_vm __fput
For deterministic validation, I added mdelay(1000) immediately after the existing next_set = false assignment. This only widens the existing post-clear callback window. A no-delay trace build naturally reached the callback-after-teardown-start/before-deinit ordering in 12 of 200 runs, but 1,500 stock-kernel stress iterations did not produce a KASAN report, so natural reproduction is timing-sensitive.
Always invoke hrtimer_cancel() for an initialized timer. Preserve the existing -EINVAL result when the timer is no longer set, but only after synchronizing with a running callback.
With this patch, hrtimer_cancel() blocked for the full widened callback window before vCPU destruction. KASAN reported no error in 100 fixed-and-widened runs or 200 fix-only timing-sweep runs.
Executive ViewAI
CVE-2026-98464 is a critical use-after-free flaw in the Linux kernel's RISC-V KVM guest-timer teardown that could allow a malicious guest to crash or compromise the host, directly threatening the isolation of virtualized environments. Organizations running RISC-V hosts with non-Sstc timer emulation and VMMs that destroy the VM on system events are at risk, though exploitation requires local access and precise timing, making the practical likelihood low.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-103704
GHSA-w23m-4j94-2gwq
NVD
CVE.org
EPSS
Exploit-DB