From mboxrd@z Thu Jan 1 00:00:00 1970 From: AL-KERNEL To: kernel-cve@kernelcve.org Subject: [CVE-2026-89749][LOW] tracing: Fix crash passing ERR_PTR to kthread_stop() Date: Fri, 11 Sep 2026 22:22:27 -0400 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-AL-KERNEL-CVE: CVE-2026-89749 X-AL-KERNEL-Priority: LOW X-AL-KERNEL-Severity: LOW X-AL-KERNEL-Base-Severity: LOW X-AL-KERNEL-KPANIC: NO X-AL-KERNEL-ActionableScore: 0 X-AL-KERNEL-ActionableScore-Lower: unknown X-AL-KERNEL-Commit: 12a499f741fc5be3731c8b0a0d909406575cc2eb List-Id: 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: stable@vger.kernel.org Fixes: e618700 ("tracing/events: add startup tests for events") Link: https://patch.msgid.link/20260817120642.668375-3-sh_def@163.com Signed-off-by: Hui Su Signed-off-by: Steven Rostedt Signed-off-by: Greg Kroah-Hartman 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 alexanjelausa@gmail.com (and both send reply to CVE record itself too and see "reply" button below for howto reply).