* [CVE-2026-89749][LOW] tracing: Fix crash passing ERR_PTR to kthread_stop()
@ 2026-09-12 2:22 AL-KERNEL
0 siblings, 0 replies; only message in thread
From: AL-KERNEL @ 2026-09-12 2:22 UTC (permalink / raw)
To: kernel-cve
CVE: CVE-2026-89749
Priority: LOW
AL-KERNEL base severity: LOW
KPANIC flag: NO
Patch: tracing: Fix crash passing ERR_PTR to kthread_stop()
Commit: 12a499f741fc5be3731c8b0a0d909406575cc2eb
Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=12a499f741fc5be3731c8b0a0d909406575cc2eb
Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-89749
Analysis date: Fri, 11 Sep 2026 22:22:27 -0400
ActionableScore: 0
ActionableScore lower bound: unknown
Actionable bucket: Ordinary Moderate
Manual review required: NO
Summary:
No one-sentence report phrase was found.
======================================================================
ABOUT THIS REPORT
======================================================================
The original Linux kernel CVE announcement for CVE-2026-89749 is available here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-89749
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: LOW
Manual review required: NO
A detailed explanation of the methodology and priority rules is included
at the end of this message.
======================================================================
AL-KERNEL CLASSIFICATION RESULT
======================================================================
CVE-2026-89749 LOW https://www.kernelcve.org/list/?q=CVE-2026-89749 CHECK WITH IMPACT FROM ORIG NN LOW Maybe valid. Check manually. Hints by AL-KERNEL: The best (paranoid) CVSS is 'AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H';CWE-252;CWE-754;**CWE-476;BEST CVSS score: '4.1';DESCR 'A crash can occur in the tracing event boot-time self test because event_test_stuff() passes the return value of kthread_run() directly to kthread_stop(). If kthread creation fails under memory pressure, kthread_run() can return ERR_PTR(-ENOMEM) instead of a valid task_struct pointer, and kthread_stop() may dereference that invalid pointer and crash the kernel. For the CVSS the PR:H is used because reliable triggering normally requires administrative control over boot conditions, kernel configuration, or severe memory pressure during early self tests. The issue is not network reachable and is not triggered by packet traffic or a normal remote interface. Impact is denial of service via kernel crash only, with no supported path to information disclosure or privilege escalation.';NO MANUAL CHECK; ,and ActionableScore result is Ordinary Moderate (with actual score 0) YES WARNONLY TRACE SIMPLEFIX LINUS TEST NO NO checked
======================================================================
ACTIONABLESCORE ANALYSIS
======================================================================
ActionableScore=0
PrimitiveClass=CLASS_C
RealUAF=NO
HostAdminRequired=YES
NamespaceScopedPrivilege=NO
ImportantCandidate=NO
ManualReview=NO
AutoDowngradeAllowed=YES
1. ActionableScore
* Raw conservative score: 0
* Conservative score: 0
* Raw paranoid score: 0
* Paranoid score: 0
* Final recommended bucket: **Ordinary Moderate**::
No floor or cap changed the score. Conservative and paranoid scores are identical because the patch establishes only an ERR_PTR invalid pointer dereference in a boot-time tracing self-test path, not a UAF, repeated lifetime mutation, authorization bypass, or exploitable corruption primitive.
2. Signal breakdown
Positive signals:
* +1 Weak or indirect corruption candidate. The code passes an ERR_PTR returned by kthread_run() to kthread_stop(), which treats it as a task_struct pointer.
* +1 Reliable kernel crash / strong DoS. The commit explicitly states that kthread_stop() dereferences the invalid pointer and crashes the kernel.
Negative signals:
* -2 Host-admin-equivalent / boot-control requirement. The affected function is marked __init and is part of boot-time tracing event self-tests. Reliable triggering requires control over boot conditions, kernel configuration, or severe memory pressure during early self-test execution.
Important non-awarded signals:
* Real UAF not awarded. The object is not freed and reused after lifetime end. The bug is ERR_PTR misuse.
* Concrete repeated release/refcount not awarded. There is no first release that can end lifetime followed by a second put/free/refcount operation on the same dangling reference.
* Structured stale-object leverage not awarded. No stale active object or post-free structured field consumption is established.
* Weak LPE and Strong LPE not awarded. No controlled reclaim, object replacement, arbitrary write, credential manipulation, or privilege escalation path is supported.
* C/I not awarded. There is no disclosure path and no unauthorized integrity modification.
* Extra Availability not awarded. The crash is already counted once as reliable DoS.
* Remote reachability not awarded. No packet, syscall, device, netlink, or normal runtime user interface reaches this path.
3. Reachability analysis
The vulnerable code runs in event_test_stuff(), a boot-time __init tracing event self-test helper. The immediate failure condition is kthread_run() returning ERR_PTR(-ENOMEM), for example under memory pressure, followed by kthread_stop() dereferencing that invalid pointer.
A normal local unprivileged user does not have a realistic runtime trigger because the path is not a normal post-boot user API. Reliable exploitation would require administrative influence over the host boot environment, kernel configuration, or early boot memory pressure. Therefore HostAdminRequired=YES.
No namespace-scoped privilege path is established. There is no indication that user namespaces, network namespaces, container-local capabilities, or delegated capabilities can exercise the complete trigger chain. No prior network exposure or special hardware is involved. The timing is not a race. It is an ordered error path that occurs only if kthread creation fails during the self-test.
4. Primitive and severity interpretation
The exact primitive is invalid pointer dereference caused by passing ERR_PTR(-ENOMEM) as if it were a valid struct task_struct pointer. This is Class C behavior: crash/DoS from invalid-state handling without an independently useful corruption primitive.
This is not an active structured UAF and not fixed stale storage. It is not cleanup after object lifetime end. It is an unchecked error return from kthread_run() followed by a helper call that expects a valid task pointer.
No concrete repeated release/refcount operation exists. No first lifetime operation may free the task object because no valid task object was created. No second operation mutates a freed object's lifetime metadata.
Demonstrated consequence: kernel crash during boot-time tracing event self-test under memory pressure.
Speculative consequence: broader exploitation is not technically supported by the patch. There is no evidence of controlled memory corruption, privilege escalation, or information disclosure.
ImportantCandidate=NO because the primitive is crash-only, boot-time, host-admin-controlled in practical terms, and lacks meaningful unresolved exploitation leverage.
AutoDowngradeAllowed=YES because no Class A primitive, real UAF, repeated refcount mutation, security-boundary bypass, COW/ownership violation, controlled corruption, or below-host-admin attack path is established.
Likely operational severity is Low-like / ordinary Moderate robustness impact, mainly relevant for systems that enable the affected tracing self-test path and encounter memory pressure during boot.
5. One-sentence report phrase
A boot-time tracing event self-test can crash the kernel because event_test_stuff() passes an ERR_PTR from failed kthread_run() directly to kthread_stop(), but reliable triggering requires host boot or memory-pressure control and no UAF, privilege escalation, or network exposure is established.
6. Manual review recommendation
NO MANUAL CHECK NEEDED
Reason: this is a constrained boot-time self-test crash caused by unchecked ERR_PTR handling, with HostAdminRequired=YES, RealUAF=NO, PrimitiveClass=CLASS_C, and no unresolved exploitation primitive beyond DoS.
7. Call-site confidence
Call-site confidence: high
======================================================================
UPSTREAM PATCH SUMMARY
======================================================================
Patch: tracing: Fix crash passing ERR_PTR to kthread_stop()
Commit: 12a499f741fc5be3731c8b0a0d909406575cc2eb
Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=12a499f741fc5be3731c8b0a0d909406575cc2eb
Commit description:
event_test_stuff() calls kthread_run() and unconditionally passes the
returned task_struct pointer to kthread_stop(). kthread_run() returns an
error pointer such as ERR_PTR(-ENOMEM) when kthread creation fails, for
example under memory pressure during the boot-time event self-test.
kthread_stop() then dereferences the invalid pointer, crashing the kernel.
Check the result of kthread_run() before passing it to kthread_stop(). Use
WARN_ON() so that a failure to create the self-test thread does not go
unnoticed, matching the ring-buffer self-test fix in commit
9154286 ("ring-buffer: Fix crash passing ERR_PTR to kthread_stop()").
Cc: [email protected]
Fixes: e618700 ("tracing/events: add startup tests for events")
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Hui Su <[email protected]>
Signed-off-by: Steven Rostedt <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Changed files:
kernel/trace/trace_events.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=12a499f741fc5be3731c8b0a0d909406575cc2eb
======================================================================
DETAILED REPORT METHODOLOGY
======================================================================
The original Linux kernel CVE announcement for CVE-2026-89749 can be found here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-89749
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: Not available
The Best / paranoid CVSS vector: AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H
The Best / paranoid CVSS score: 4.1
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: unknown
Paranoid ActionableScore: 0
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: LOW
KPANIC detected for this report: NO
Published priority for this report (same as in Subject): LOW
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 [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-12 2:22 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-12 2:22 [CVE-2026-89749][LOW] tracing: Fix crash passing ERR_PTR to kthread_stop() AL-KERNEL
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox