From mboxrd@z Thu Jan 1 00:00:00 1970 From: AL-KERNEL To: kernel-cve@kernelcve.org Subject: [CVE-2026-89930][MODERATE 7.0] KVM: nVMX: Service local TLB flushes on failed nested VM-Enter Date: Wed, 16 Sep 2026 13:01:49 -0400 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-AL-KERNEL-CVE: CVE-2026-89930 X-AL-KERNEL-Priority: MODERATE 7.0 X-AL-KERNEL-Severity: MODERATE 7.0 X-AL-KERNEL-Base-Severity: MODERATE X-AL-KERNEL-KPANIC: YES X-AL-KERNEL-ActionableScore: 5 X-AL-KERNEL-ActionableScore-Lower: 4 X-AL-KERNEL-Commit: c0c66cd575e31218da6a7d104c6ef80b0830b60c List-Id: 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: stable@vger.kernel.org Reported-by: Sashiko # Internal review Suggested-by: Sean Christopherson Signed-off-by: Yosry Ahmed Link: https://patch.msgid.link/20260722230128.1587363-1-yosry@kernel.org Signed-off-by: Sean Christopherson Signed-off-by: Greg Kroah-Hartman 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 alexanjelausa@gmail.com (and both send reply to CVE record itself too and see "reply" button below for howto reply).