From: AL-KERNEL <[email protected]>
To: [email protected]
Subject: [CVE-2026-89912][MODERATE REGULAR] KVM: arm64: vgic-its: Don't dereference a NULL collection on ITT save
Date: Wed, 16 Sep 2026 08:33:21 -0400 [thread overview]
Message-ID: <[email protected]> (raw)
CVE: CVE-2026-89912
Priority: MODERATE REGULAR
AL-KERNEL base severity: MODERATE
KPANIC flag: NO
Patch: KVM: arm64: vgic-its: Don't dereference a NULL collection on ITT save
Commit: 3d4c26b16a04a084fe0bde08ccdd8086570f8bbe
Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=3d4c26b16a04a084fe0bde08ccdd8086570f8bbe
Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-89912
Analysis date: Wed, 16 Sep 2026 08:33:21 -0400
ActionableScore: 4
ActionableScore lower bound: 3
Actionable bucket: Borderline / manual review recommended
Manual review required: YES
Summary:
No one-sentence report phrase was found.
======================================================================
ABOUT THIS REPORT
======================================================================
The original Linux kernel CVE announcement for CVE-2026-89912 is available here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-89912
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 REGULAR
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-89912 MODERATE https://www.kernelcve.org/list/?q=CVE-2026-89912 CHECK WITH IMPACT FROM ORIG NN MODERATE Maybe valid. Check manually. Hints by AL-KERNEL: The best (paranoid) CVSS is 'AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:N/A:H';**CWE-476;CWE-703;CWE-754;Other CVSS 'AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H';BEST CVSS score: '5.6';DESCR 'KVM arm64 vgic ITS can dereference a NULL collection pointer while saving an interrupt translation table entry. A guest can prepare this invalid state with MAPD, MAPTI, and MAPC with V 0, leaving the ITE on the device ITT list while dropping its collection. The host crash occurs when the VMM later issues KVM_DEV_ARM_ITS_SAVE_TABLES, commonly during VM migration or checkpoint style operations. For the CVSS the PR:L value is used because the attacker needs control of a guest or guest workload, but does not need host administrator privileges. The issue is not directly network reachable. Impact is denial of service via host kernel oops or panic. No direct confidentiality or integrity impact is assigned because the observed primitive is a NULL pointer dereference rather than UAF or writable memory corruption.';YES REQUIRES MANUAL CHECK; ,and ActionableScore result is Borderline / manual review recommended (with actual score 4) YES VIRT SIMPLEFIX HARDWARE LINUS NO NO checked
======================================================================
ACTIONABLESCORE ANALYSIS
======================================================================
ActionableScore=4
ActionableScoreLower=3
PrimitiveClass=CLASS_C
RealUAF=NO
HostAdminRequired=UNKNOWN
NamespaceScopedPrivilege=NO
ImportantCandidate=NO
ManualReview=RECOMMENDED
AutoDowngradeAllowed=YES
1. ActionableScore
* Raw conservative score: 3
* Conservative score: 3
* Raw paranoid score: 4
* Paranoid score: 4
* Final recommended bucket: **Borderline / manual review recommended**::
No floor or cap changed the score.
2. Signal breakdown
Conservative positive signals:
* +1 Weak invalid structured state / NULL pointer dereference. The ITE remains on the ITT list while ite->collection is NULL, and vgic_its_save_ite() dereferences it without checking.
* +1 Reliable kernel crash / strong DoS. The commit explicitly states that this oopses the host when KVM_DEV_ARM_ITS_SAVE_TABLES is issued.
* +1 Confirmed guest-to-host host DoS consequence. The supplied evidence establishes that guest-created ITS state can cause a host kernel oops during host-side KVM migration table save.
Paranoid additional signal:
* +1 Operational KVM boundary sensitivity. The vulnerable state is prepared by guest-visible ITS commands and is consumed later by host KVM migration/save logic, so manual triage should not treat it as an ordinary local NULL dereference.
Negative signals:
* No -2 host-admin penalty applied. Host-admin-equivalent privilege is not positively established for the complete real-world trigger path.
* No race/timing penalty applied. The bug is an ordered state sequence plus later VMM save operation, not a narrow timing race.
* No rare-hardware penalty applied. This is arm64 KVM VGIC ITS functionality, but the supplied evidence does not establish rare or physical-only hardware as a material requirement.
Material non-awarded signals:
* RealUAF not awarded. The patch establishes a NULL collection pointer, not post-free use of a released object.
* Controlled reclaim not demonstrated.
* Arbitrary or directed kernel write not demonstrated.
* Confidentiality and integrity impact not awarded. The observed primitive is NULL dereference and host crash.
* KVM strong guest-to-host exploitation leverage not awarded. There is no concrete guest-directed host memory read/write, controlled host object replacement, callback control, or demonstrated guest escape.
* Local unprivileged trigger not awarded. A malicious guest can prepare the invalid state, but the complete trigger also requires VMM-side KVM_DEV_ARM_ITS_SAVE_TABLES.
* Practical exploit chain beyond crash not awarded. The supplied chain reaches host DoS only.
* Extra Availability point not awarded because the same host oops is already counted as reliable DoS.
* Concrete repeated release/refcount signal not awarded. There is no first release followed by a second lifetime mutation on the same dangling reference.
* FLOOR 5 not applied. There is no RealUAF, no repeated lifetime mutation, and no stronger exploitation surface beyond host crash.
3. Reachability analysis
The evaluated trigger is compound. A malicious guest can issue MAPD, MAPTI, and MAPC with V=0 to create an ITE that remains listed but has no collection. The later fault occurs when the local VMM or host-side KVM userspace issues KVM_DEV_ARM_ITS_SAVE_TABLES, typically for migration or checkpoint-like save.
A guest-only attacker controls the invalid virtual ITS state but is not shown to directly issue the host ioctl. A local VMM process with /dev/kvm access can perform the save operation, but that is a different security principal unless the guest can induce migration through a management interface. A host administrator can obviously complete the sequence, but host-admin-equivalent privilege is not positively established as mandatory for all deployments.
HostAdminRequired is UNKNOWN because the supplied input does not fully resolve whether the complete trigger is available to a below-host-admin VMM user, a management service, or only host administration. NamespaceScopedPrivilege is NO because the issue is not about namespace-scoped capability checks. No direct network reachability is established. No special race is required.
4. Primitive and severity interpretation
The exact primitive is a NULL pointer dereference in host KVM arm64 VGIC ITS save code. MAPC with V=0 can drop ite->collection while leaving the ITE on the device ITT list. vgic_its_save_ite() then assumes collection exists and dereferences it during ITS table save.
This is active structured KVM state, but the stale or invalid field use is limited to a NULL dereference during save. It is not a demonstrated UAF, not a repeated release/refcount mutation, and not a controlled replacement or reclaim primitive. The demonstrated consequence is guest-influenced host kernel oops or panic during migration/save. The speculative consequence would be stronger guest-to-host compromise, but the supplied patch does not establish a useful host memory corruption primitive.
PrimitiveClass is CLASS_C because the demonstrated behavior is primarily invalid-state NULL dereference and DoS. ImportantCandidate is NO because there is no unresolved Class A or strong Class B primitive. ManualReview is RECOMMENDED because the bug crosses the guest-host virtualization boundary and causes host DoS. AutoDowngradeAllowed is YES because the established primitive is crash-only and lacks UAF, controlled corruption, authorization bypass, or meaningful unresolved exploitation leverage.
Likely operational severity is borderline to actionable Moderate depending on whether the environment exposes migration/save operations to untrusted guest tenants or automated management workflows.
5. One-sentence report phrase
A guest can create an invalid VGIC ITS ITE state with MAPD, MAPTI, and MAPC(V=0), causing a host NULL pointer dereference when the VMM later saves ITS tables for migration, with impact limited to host DoS based on the supplied evidence.
6. Manual review recommendation
MANUAL CHECK RECOMMENDED
Reason: the issue is a KVM guest-influenced host crash path, but the patch supports NULL dereference DoS only and does not establish UAF, controlled host memory corruption, guest escape, or privilege escalation.
7. Call-site confidence
Call-site confidence: high
======================================================================
UPSTREAM PATCH SUMMARY
======================================================================
Patch: KVM: arm64: vgic-its: Don't dereference a NULL collection on ITT save
Commit: 3d4c26b16a04a084fe0bde08ccdd8086570f8bbe
Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=3d4c26b16a04a084fe0bde08ccdd8086570f8bbe
Commit description:
MAPC with V=0 drops ite->collection but leaves the ITE on the device's
ITT list, and vgic_its_save_ite() dereferences it unconditionally. A
guest that issues MAPD, MAPTI and then MAPC(V=0) therefore oopses the
host when the VMM issues KVM_DEV_ARM_ITS_SAVE_TABLES to migrate it.
That sequence is UNPREDICTABLE per the architecture, but KVM already
handles the resulting state in the translate, MOVI and DISCARD paths.
Save a zeroed entry, which vgic_its_restore_ite() reads back as
invalid. Skipping the ITE instead would leave the ITT slot holding
whatever is in guest memory, and restore rejects an entry naming a
collection the restored collection table does not have.
Fixes: eff484e ("KVM: arm64: vgic-its: ITT save and restore")
Cc: [email protected]
Signed-off-by: Fuad Tabba <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Oliver Upton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Changed files:
arch/arm64/kvm/vgic/vgic-its.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=3d4c26b16a04a084fe0bde08ccdd8086570f8bbe
======================================================================
DETAILED REPORT METHODOLOGY
======================================================================
The original Linux kernel CVE announcement for CVE-2026-89912 can be found here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-89912
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:H/PR:L/UI:N/S:U/C:N/I:N/A:H
The Best / paranoid CVSS vector: AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:N/A:H
The Best / paranoid CVSS score: 5.6
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: 3
Paranoid ActionableScore: 4
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: NO
Published priority for this report (same as in Subject): MODERATE REGULAR
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).
reply other threads:[~2026-09-16 12:33 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --from, and --in-reply-to
switches of git-send-email(1) and next cmd tested by kernelcve.org admin:
git send-email --smtp-server=mail.kernelcve.org --smtp-server-port=25 --smtp-auth=none --from='Your Name <youremail@domain.is>' --suppress-cc=all --no-cc \
--in-reply-to=cve-2026-89912.7e3fc95233267ebfef1e4f13@kernelcve.org \
[email protected] \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
The file with msg could look like this then:
cat YOUR_REPLY
Subject: Re: [CVE-2026-64206][MODERATE REGULAR] Bluetooth: L2CAP test
Just testing public-inbox replies.
Thanks,
MyName
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox