* [CVE-2026-89930][MODERATE 7.0] KVM: nVMX: Service local TLB flushes on failed nested VM-Enter
@ 2026-09-16 17:01 21% AL-KERNEL
0 siblings, 0 replies; 1+ results
From: AL-KERNEL @ 2026-09-16 17:01 UTC (permalink / raw)
To: kernel-cve
CVE: CVE-2026-89930
Priority: MODERATE 7.0
AL-KERNEL base severity: MODERATE
KPANIC flag: YES
Patch: KVM: nVMX: Service local TLB flushes on failed nested VM-Enter
Commit: c0c66cd575e31218da6a7d104c6ef80b0830b60c
Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c0c66cd575e31218da6a7d104c6ef80b0830b60c
Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-89930
Analysis date: Wed, 16 Sep 2026 13:01:49 -0400
ActionableScore: 5
ActionableScore lower bound: 4
Actionable bucket: Actionable Moderate / Strong Important candidate requiring manual review
Manual review required: YES
Summary:
A KVM nVMX stale TLB state issue can occur when a failed nested VM-Enter skips queued local TLB flushes after L2 VPID state was updated, potentially weakening nested memory isolation and requiring manual review.
======================================================================
ABOUT THIS REPORT
======================================================================
The original Linux kernel CVE announcement for CVE-2026-89930 is available here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-89930
The original announcement does not normally provide a security severity
estimate, CVSS assessment, or enough information to determine whether the
reported kernel bug represents a practically relevant security issue.
This report was generated by AL-KERNEL, an AI-assisted Linux kernel
vulnerability analysis system developed by Alexander Larkin. It combines
an autonomous classifier with LLM-assisted technical analysis and a
separate ActionableScore mechanism.
The purpose of this report is to prioritize Linux kernel CVEs before
manual review, identify cases that require prompt investigation, and
support automatic closure of issues that are unlikely to have meaningful
security impact.
Published priority for this report: MODERATE 7.0
Manual review required: YES
A detailed explanation of the methodology and priority rules is included
at the end of this message.
======================================================================
AL-KERNEL CLASSIFICATION RESULT
======================================================================
CVE-2026-89930 MODERATE https://www.kernelcve.org/list/?q=CVE-2026-89930 CHECK WITH IMPACT FROM ORIG NN MODERATE Maybe valid. Check manually. Hints by AL-KERNEL: The best (paranoid) CVSS is 'AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H';*CWE-664;CWE-703;CWE-284;Other CVSS 'AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L';BEST CVSS score: '7.8';DESCR 'A KVM nVMX TLB state bug can occur when a nested VM-Enter fails after KVM has already switched far enough into L2 context and queued a local TLB flush. The failed path did not service the queued flush, while VPID tracking such as last_vpid could already be updated. A later successful nested entry could then run with stale TLB translations and may weaken memory isolation between nested virtualization contexts. For the CVSS the PR:L is selected because a local user or process needs access to KVM and nested VMX execution, but full host administrator privileges are not necessarily required in many deployments. The issue is not network reachable by itself and is triggered through local virtualization control paths rather than packet traffic. Impact is at least limited confidentiality, integrity, and availability risk in nested guest memory handling. For the paranoid score, choose the highest still-defensible interpretation supported by the bug class and patch context, with preference for manual-review sensitivity over autoclosed false negatives.';YES REQUIRES MANUAL CHECK; ,and ActionableScore result is Actionable Moderate / Strong Important candidate requiring manual review (with actual score 5) YES VIRT INIT HARDWARE LINUS KPANIC INCREASED_TO_MODERATE7_BASED_ON_GUESSCVSS NO NO checked
======================================================================
ACTIONABLESCORE ANALYSIS
======================================================================
ActionableScore=5
ActionableScoreLower=4
PrimitiveClass=CLASS_B
RealUAF=NO
HostAdminRequired=NO
NamespaceScopedPrivilege=NO
ImportantCandidate=YES
ManualReview=REQUIRED
AutoDowngradeAllowed=NO
## 1. ActionableScore
* Raw conservative score: 4
* Conservative score: 4. No floor or cap applied.
* Raw paranoid score: 5
* Paranoid score: 5. No floor or cap applied.
* Final recommended bucket: **Actionable Moderate / Strong Important candidate requiring manual review**::
## 2. Signal breakdown
Conservative positive signals:
* +1 Active-state retirement / synchronization bypass. KVM had queued local TLB flush requests for L2, but the failed nested VM-Enter path skipped servicing them after KVM had progressed far enough into L2 context.
* +1 Active translation synchronization signal. The fix adds `kvm_service_local_tlb_flush_requests(vcpu)`, which indicates that stale translations could remain operational in hardware TLB state.
* +1 Active semantic / translation-domain transition. `last_vpid` may be updated for L2 even when the VM entry later fails, so a later successful nested entry can observe VPID/TLB state inconsistent with the intended translation domain.
* +1 Below-host-admin reachability. The described concrete scenario is controlled by L1 nested guest behavior changing L2 VPID and causing failed then successful nested VM-Enter, assuming nested VMX is exposed.
Paranoid additional signal:
* +1 Weak unresolved KVM memory-isolation concern. Stale TLB translations in nVMX/VPID handling can plausibly affect nested guest memory isolation, but the patch does not establish arbitrary host read/write or a demonstrated guest-to-host escape.
Non-awarded material signals:
* RealUAF not awarded. This is stale translation state, not a heap/object use-after-free.
* Strong LPE / strong exploitation leverage +2 not awarded. No controlled reclaim, directed host write, callback control, or demonstrated guest-to-host corruption primitive is established.
* Reliable kernel crash / strong DoS not awarded. The commit explains stale TLB correctness risk, not an observed panic/Oops.
* Confidentiality and integrity bonuses not awarded separately. The plausible C/I concern is represented as unresolved KVM translation-isolation risk, not as a proven disclosure or write primitive.
* Remote reachability not awarded. This is not packet-triggered.
* Race/timing penalty not applied. The issue is an ordered failed VM-Enter path with missing flush servicing, not a narrow uncontrollable race.
* Host-admin penalty not applied. Host-admin-equivalent privilege is not established for the attacker once nested VMX is exposed to the guest.
Arithmetic:
* Conservative: 1 + 1 + 1 + 1 = 4
* Paranoid: 4 + 1 = 5
## 3. Reachability analysis
The relevant KVM attacker roles are distinct.
A malicious L1 guest can influence nested VMX state, including L2 VPID behavior and failed nested VM-Enter sequences, if the host/VMM exposes nested VMX. This is below host-admin privilege for the guest attacker, but it does require prior VM provisioning with nested virtualization enabled.
A local VMM or host userspace process with `/dev/kvm` access can also exercise the KVM nVMX path. That is a local virtualization-control attacker model, not a remote network attacker model.
A host administrator is not positively required by the patch context for the complete vulnerable state transition once the VM and nested VMX environment exist. Therefore `HostAdminRequired=NO`.
This is not namespace-scoped. User/network namespaces are not the relevant privilege boundary, so `NamespaceScopedPrivilege=NO`.
No special rare physical hardware requirement is established beyond x86 VMX/nested virtualization support. Nested VMX exposure is a deployment condition, but not enough by itself to apply a rare-subsystem or hardware penalty.
## 4. Primitive and severity interpretation
The exact primitive is a stale active translation-state condition in KVM nVMX. KVM can update `last_vpid` and queue local TLB flush work for L2, then enter the failed nested VM-Enter path without servicing the queued flush. A later successful nested entry may then run with stale TLB translations.
This is not an ordinary UAF and not fixed stale storage. It is an active translation synchronization and VPID consistency bug. The affected state is security-sensitive because it participates in nested guest memory translation and isolation.
Primitive class is `CLASS_B`: a meaningful active kernel translation-state consistency violation exists, but the evidence does not establish a Class A primitive such as arbitrary host read/write, controlled memory corruption, demonstrated guest-to-host escape, or privilege escalation.
Demonstrated consequence: stale TLB translations may be used after failed nested VM-Enter due to missed local TLB flush servicing.
Speculative consequence: stronger nested memory isolation impact may be possible, but the patch does not prove a controlled boundary-crossing primitive.
ImportantCandidate is `YES` because this is KVM translation state with unresolved memory-isolation implications and should not be auto-downgraded from patch wording alone.
AutoDowngradeAllowed is `NO` because the bug affects active virtualization translation state and stale hardware TLB state. Automatic closure as ordinary Moderate could miss a meaningful KVM isolation issue.
Likely operational severity: actionable Moderate at minimum, with Important-candidate manual review needed.
## 5. One-sentence report phrase
A KVM nVMX stale TLB state issue can occur when a failed nested VM-Enter skips queued local TLB flushes after L2 VPID state was updated, potentially weakening nested memory isolation and requiring manual review.
## 6. Manual review recommendation
MANUAL CHECK REQUIRED
Reason: the patch fixes missed TLB flush servicing in KVM nVMX after L2 translation context changes, and stale VPID/TLB state may affect nested memory isolation even though no arbitrary host read/write or concrete guest-to-host exploit is demonstrated.
## 7. Call-site confidence
Call-site confidence: medium
======================================================================
UPSTREAM PATCH SUMMARY
======================================================================
Patch: KVM: nVMX: Service local TLB flushes on failed nested VM-Enter
Commit: c0c66cd575e31218da6a7d104c6ef80b0830b60c
Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c0c66cd575e31218da6a7d104c6ef80b0830b60c
Commit description:
KVM services local TLB flushes on "full" nested VM-Exits (through
__nested_vmx_vmexit()), but not if a nested VM-Enter fails (e.g. due to
failed VMCS checks in nested_vmx_enter_non_root_mode()).
However, it is possible that KVM had queued TLB flushes that need to be
performed, even if the nested VM-Enter was not successful. For example,
if VPID is disabled for L2 (via nested_vmx_transition_tlb_flush(), or if
via the MSR load lists, as the SDM says:
If any MSR is being loaded in such a way that would architecturally
require a TLB flush, the TLBs are updated so that, after VM entry, the
logical processor will not use any translations that were cached before
the transition.
The SDM is unclear about when the TLB flush should occur, and whether or
not a failed VM entry would flush the TLB, so it is safer to always
do the TLB flush in this case.
More concretely, KVM also updates the last VPID L1 used for L2 in
nested_vmx_transition_tlb_flush() (i.e. last_vpid), even if the VM entry
ultimately fails. With the current code, KVM could miss a TLB flush if
L1 changes L2's VPID, then does a failed VM entry followed by a
successful one, as the failed VM entry would update last_vpid but not
actually flush the TLB. Servicing local TLB flushes on failed VM entries
makes sure that the TLB is always flushed when last_vpid is updated.
Fixes: 5c614b3 ("KVM: nVMX: nested VPID emulation")
Cc: [email protected]
Reported-by: Sashiko <[email protected]> # Internal review
Suggested-by: Sean Christopherson <[email protected]>
Signed-off-by: Yosry Ahmed <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Sean Christopherson <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Changed files:
arch/x86/kvm/vmx/nested.c
Diff excerpt:
Not included in this email. See the upstream URL for the full patch.
Full patch:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c0c66cd575e31218da6a7d104c6ef80b0830b60c
======================================================================
DETAILED REPORT METHODOLOGY
======================================================================
The original Linux kernel CVE announcement for CVE-2026-89930 can be found here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-89930
The original CVE announcement normally does not include a security-level
estimate. In particular, it may not contain a CVSS assessment, an impact
level, or enough information to determine whether the reported bug is a
practically relevant security issue. One purpose of this parallel CVE list
is to provide that missing technical and prioritization information.
The original goal of the AL-KERNEL project was to prioritize Linux kernel
CVE analysis automatically before manual review. The system can also help
identify non-security issues that may be suitable for automatic closure.
This report was generated by AL-KERNEL, an AI-assisted Linux kernel
vulnerability analysis system developed by Alexander Larkin.
The first analysis stage combines an autonomous classifier with additional
LLM-based analysis. The autonomous classifier runs locally on a CPU and is
based on a backpropagation neural network. Together, these mechanisms
produce a technical vulnerability description, identify likely weakness
types, estimate CVSS severity, and provide input for ActionableScore.
Two CVSS estimates are retained because incomplete kernel vulnerability
information often permits more than one defensible interpretation:
Conservative CVSS vector: AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
The Best / paranoid CVSS vector: AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
The Best / paranoid CVSS score: 7.8
The conservative vector represents a lower-impact interpretation.
The Best/paranoid vector intentionally represents a plausible upper-bound
interpretation and should not automatically be treated as demonstrated
real-world impact.
CVSS may also need to be adjusted for a particular Linux deployment,
because actual reachability, privileges, enabled kernel configuration,
hardware, namespaces, exposed device nodes, and other environmental
conditions can differ significantly between systems.
A separate ActionableScore mechanism evaluates practical remediation
urgency. Its analysis may include reachability, attack prerequisites,
subsystem exposure, memory-corruption characteristics, denial-of-service
reliability, and possible confidentiality, integrity, or
privilege-escalation impact.
Conservative ActionableScore: 4
Paranoid ActionableScore: 5
The final base severity is taken directly from the second tab-separated
field of the AL-KERNEL classification result. ActionableScore does not
replace or independently override that final AL-KERNEL decision, and
if ActionableScore adjusted impact level of ALKERNEL, then you would see
self-readable flags above like INCREASED_TO_HIGH_BASED_ON_ACTIONABLESCOREHIGHEREQTHAN7.
For an AL-KERNEL result of MODERATE, this report uses the following
additional presentation split:
ActionableScore below 5 -> MODERATE REGULAR
ActionableScore 5 or more -> MODERATE 7.0
The distinction between MODERATE REGULAR and MODERATE 7.0 makes it
possible to identify Moderate issues that should receive manual analysis
and fixes before lower-priority MODERATE REGULAR issues. In many cases,
MODERATE REGULAR fixes may wait for a later rebase or routine update.
There is one override in which MODERATE REGULAR becomes MODERATE 7.0
even when the ActionableScore is below 5. When the AL-KERNEL result
contains the KPANIC flag, a MODERATE result is always presented as
MODERATE 7.0. The KPANIC flag selected with few regexps without
usage of AI at all, so it helps to detect cases when Kernel Crash happens
and similar (to filter False-Negative results from the LLM usage).
KPANIC indicates that a reliable kernel crash, kernel panic, or similarly
serious kernel availability impact was identified by the classification
workflow.
AL-KERNEL base severity for this report: MODERATE
KPANIC detected for this report: YES
Published priority for this report (same as in Subject): MODERATE 7.0
These results are intended to support engineering triage. They are
machine-generated estimates, and cases marked for manual review should
be validated by a human security engineer before final disposition.
For more info read docs linked from here: https://kernelcve.org/
(and you can submit you own patch there to generate such a report
for non-existant CVE-id yet).
Note that in many cases this AI tool selects higher severity, than
real is (means you can expect Importants instead of Moderate 7.0 or
Moderates 7.0 instead of regular Moderates). If you see such cases,
please use reply email interface to add additional manual analyses
info to this particular CVE.
And please, please, let me know when you see Lows instead of Importants
or Important instead of Low (because particular for such cases I
need to tune this AI tool to make it better for this one and next similar).
My contact email for such notifications is [email protected] (and both
send reply to CVE record itself too and see "reply" button below for howto reply).
^ permalink raw reply [relevance 21%]
Results 1-1 of 1 | reverse | sort options + mbox downloads above
-- links below jump to the message on this page --
2026-09-16 17:01 21% [CVE-2026-89930][MODERATE 7.0] KVM: nVMX: Service local TLB flushes on failed nested VM-Enter AL-KERNEL
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox