From mboxrd@z Thu Jan 1 00:00:00 1970 From: AL-KERNEL To: kernel-cve@kernelcve.org Subject: [CVE-2026-80889][MODERATE REGULAR] can: isotp: fix timer drain order, wakeup handling and tx_gen ordering Date: Fri, 04 Sep 2026 17:44:38 -0400 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-AL-KERNEL-CVE: CVE-2026-80889 X-AL-KERNEL-Priority: MODERATE REGULAR X-AL-KERNEL-Severity: MODERATE REGULAR X-AL-KERNEL-Base-Severity: MODERATE X-AL-KERNEL-KPANIC: NO X-AL-KERNEL-ActionableScore: 4 X-AL-KERNEL-ActionableScore-Lower: 3 X-AL-KERNEL-Commit: 8acab9fc66d6f426c36968c91a979f70784945a7 List-Id: CVE: CVE-2026-80889 Priority: MODERATE REGULAR AL-KERNEL base severity: MODERATE KPANIC flag: NO Patch: can: isotp: fix timer drain order, wakeup handling and tx_gen ordering Commit: 8acab9fc66d6f426c36968c91a979f70784945a7 Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8acab9fc66d6f426c36968c91a979f70784945a7 Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-80889 Analysis date: Fri, 04 Sep 2026 17:44:38 -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-80889 is available here: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-80889 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-80889 MODERATE https://www.kernelcve.org/list/?q=CVE-2026-80889 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:L/UI:N/S:U/C:L/I:L/A:H';CWE-362;CWE-667;*CWE-664;*CWE-416;Other CVSS 'AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H';BEST CVSS score: '5.8';DESCR 'A race in the CAN ISO-TP transmit path can corrupt socket state because sendmsg(), release handling, timer callbacks, and tx_gen result tracking were not ordered consistently. A local process using an ISO-TP socket may trigger stale timer activity, stranded waiters, or state updates that belong to a different transfer generation. For the CVSS the PR:L is used because reliable triggering requires local code execution with access to CAN ISO-TP socket operations, but not full administrative control in environments where a CAN interface is already available. The issue is not directly network reachable from IP networks and is driven by local socket control paths rather than remote packet traffic. Impact is at least denial of service through stuck sends, corrupted socket state, or possible kernel crash. In the paranoid case it should be treated as a possible limited memory lifetime issue because stale timer and release ordering bugs can sometimes become UAF candidates.';YES REQUIRES MANUAL CHECK; ,and ActionableScore result is Borderline / manual review recommended (with actual score 4) SKIP CVE-2026-80889 UNKNOWN SKIP The Fixes patch not applied yet, so unlikely that actual: url YES NO NO unknown MAYBE INIT ERRORPATH HARDWARE LINUS INCREASED_FROM_LOW_BASED_ON_REQUIREMANUALCHECK DECREASED_TO_MODERATEREG_BASED_ON_FALSEPOSCHECKOFKP - - checked ====================================================================== ACTIONABLESCORE ANALYSIS ====================================================================== ActionableScore=4 ActionableScoreLower=3 PrimitiveClass=CLASS_C RealUAF=NO HostAdminRequired=NO NamespaceScopedPrivilege=UNKNOWN ImportantCandidate=NO ManualReview=RECOMMENDED AutoDowngradeAllowed=YES 1. ActionableScore * Raw conservative score: 3 * Conservative score: 3. No floor or cap applied. * Raw paranoid score: 4 * Paranoid score: 4. No floor or cap applied. * Final recommended bucket: **Borderline / manual review recommended**:: 2. Signal breakdown Conservative positive signals: * +1 Local below-host-admin trigger. The vulnerable behavior is in local CAN ISO-TP socket operations such as sendmsg(), release(), wait handling, and timer callbacks. Host-admin-equivalent privilege is not established for using an already available CAN ISO-TP socket. * +1 Reliable DoS or strong DoS concern. The described failures include stranded sendmsg(), stale timer re-arming, corrupted concurrent release processing, stuck can_send() handling, and state/result mismatches that can cause local denial of service or possible kernel failure. * +1 Weak indirect corruption or invalid-state candidate. The patch addresses inconsistent TX state, timer ordering, tx_gen ordering, stale error propagation, and lock-free state access. This supports corrupted socket state, but not a concrete memory corruption primitive. Paranoid additional signal: * +1 Local unprivileged high-control kernel data-plane API. A local process can materially influence ISO-TP transfer lifetime and timing by driving concurrent sendmsg(), wait, timeout, and close/release paths. This is useful for triage sensitivity, but it does not establish UAF, arbitrary write, or LPE. Important non-awarded signals: * +0 Real UAF not awarded. The text mentions stale callbacks and release corruption, but does not directly establish use after free, post-free dereference, or a concrete stale object lifetime violation. * +0 Concrete repeated release/refcount not awarded. No first release that can end object lifetime plus later second put/free/refcount mutation on the exact same dangling reference is shown. * +0 Strong exploitation leverage not awarded. No controlled reclaim, attacker-shaped replacement object, arbitrary write, callback control, credential manipulation, or demonstrated privilege escalation is established. * +0 Confidentiality and integrity not awarded. The evidence supports corrupted state and DoS, not disclosure or unauthorized modification of protected data. * +0 Extra availability not awarded. The DoS effects are not counted again as a separate availability signal. * -0 Race penalty not applied. Although this is a race/order bug, the attacker can likely retry local socket operations. The evidence does not prove a one-shot or externally uncontrollable timing window. * -0 Host-admin penalty not applied. Host-admin-equivalent privilege is not positively established for the complete socket-level trigger on an existing CAN interface. * -0 Rare subsystem penalty not applied. CAN ISO-TP is specialized, but the prompt rules require concrete evidence that the reachable configuration is rare and difficult for the evaluated attacker to reach. 3. Reachability analysis The evaluated attacker is a local process using CAN ISO-TP socket operations. The trigger involves local control-plane and data-path actions on the socket, especially sendmsg(), wait paths, release(), TX timers, timeout processing, tx_gen tracking, and error reporting. HostAdminRequired is NO because the supplied evidence points to local socket operations, and full host-administrator privilege is not positively established as required for triggering once a CAN interface is available. There may be prior setup requirements, such as provisioning a physical CAN device or vcan interface, but the supplied data does not prove that the attacker must be host root for the vulnerable sendmsg/release/timer sequence itself. NamespaceScopedPrivilege is UNKNOWN. CAN network namespace behavior and vcan provisioning may be namespace-aware in some setups, but the supplied input does not establish that the complete trigger chain, including interface creation and ISO-TP socket operation, is attacker-obtainable inside namespaces without host-admin setup. The issue is not directly reachable over ordinary IP networks. It is local to CAN ISO-TP socket use and CAN interface availability. A remote CAN bus peer alone is not shown to be able to trigger the vulnerable sendmsg/release/timer state transitions without a local process participating. Race repeatability appears plausible because a local process can repeat sendmsg(), wait, and close/release patterns, but the exact failure depends on timer and state ordering. 4. Primitive and severity interpretation The exact primitive is inconsistent CAN ISO-TP TX state management caused by timer drain ordering, wakeup handling, tx_gen ordering, and concurrent sendmsg()/release() interactions. This is best classified as CLASS_C. The established behavior is primarily invalid state, stale timer activity, stranded waiters, and local DoS. It is not a directly established real UAF. The stale state is associated with an active structured socket object and transfer state, not merely passive data. However, the supplied evidence does not show a concrete post-free object use, controlled object reuse, second lifetime/refcount mutation, or stale structured field consumption after reclaim. Therefore, it remains a crash/DoS and invalid-state class issue rather than Class B memory lifetime corruption. Demonstrated or directly supported consequence: local denial of service through stuck sends, incorrect error state, timer/state corruption, and possible kernel crash. Speculative consequence: a timer/release ordering issue could deserve manual review for hidden lifetime bugs, but the available text does not establish UAF, double free, arbitrary write, or privilege escalation. ImportantCandidate is NO because no Class A primitive and no sufficiently strong Class B lifetime/corruption primitive is established. ManualReview is RECOMMENDED because this is a nontrivial race involving timers, socket release, and generation-tagged state. AutoDowngradeAllowed is YES because the established evidence remains DoS/invalid-state without unresolved concrete memory corruption leverage. Likely operational severity: borderline Moderate. It should not be treated as an Important-class issue from the supplied evidence alone, but the timer/release race deserves human review if the full diff or reproducer shows a real post-lifetime object access. 5. One-sentence report phrase A local CAN ISO-TP socket race can corrupt TX timer and generation state during sendmsg(), timeout, and release handling, causing stuck sends or denial of service, but the supplied evidence does not directly establish UAF, arbitrary write, information disclosure, or privilege escalation. 6. Manual review recommendation MANUAL CHECK RECOMMENDED Reason: the patch fixes multiple race/order issues in timer and release paths, and such bugs can hide lifetime issues, but the supplied evidence establishes invalid state and DoS rather than a concrete UAF or stronger exploitation primitive. 7. Call-site confidence Call-site confidence: medium ====================================================================== UPSTREAM PATCH SUMMARY ====================================================================== Patch: can: isotp: fix timer drain order, wakeup handling and tx_gen ordering Commit: 8acab9fc66d6f426c36968c91a979f70784945a7 Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8acab9fc66d6f426c36968c91a979f70784945a7 Commit description: This patch is a follow-up to commit cf070fe ("can: isotp: serialize TX state transitions under so->rx_lock") which addresses following sashiko-bot findings: - isotp_sendmsg(): drain so->txfrtimer first so a stale callback can't re-arm echotimer after the claim - isotp_release(): wake so->wait after forcing ISOTP_SHUTDOWN so a sleeping sendmsg() claim isn't stranded - isotp_sendmsg(): have both wait_event_interruptible() calls in isotp_sendmsg() also wake on ISOTP_SHUTDOWN and do not return claim to IDLE to avoid corrupting a concurrent isotp_release() process. - isotp_sendmsg(): handle potential claim of a new transfer when the wait_event_interruptible() call returns in CAN_ISOTP_WAIT_TX_DONE mode. Don't touch timers and states of the new transfer if a new thread incremented so->tx_gen before getting the lock at err_event_drop. - isotp_sendmsg(): handle a stuck can_send() and omit timer and state changes if a new transfer was claimed. wait_tx_done() returns the error recorded in so->tx_result[], tagged with the caller's own generation. - isotp_tx_timeout(): on a claimed timeout, record the ECOMM error for the timed-out transfer's own generation in so->tx_result[]; sk->sk_err is raised unconditionally, same as every other error path here. - isotp_tx_gen_done()/isotp_tx_timeout(): always read tx.state (acquire) before tx_gen - the reverse order let a weakly ordered CPU pair a fresh tx.state with a stale tx_gen/tx_result slot. - isotp_sendmsg(): wait_tx_done: drain sk_err via sock_error() once we have read the result from so->tx_result[], so an already-reported error doesn't stay latched for a later poll()/SO_ERROR. Also align the remaining lock-free so->tx.state/rx.state/cfecho accesses and use skb->hash as unique loopback echo frame indicator. Fixes: cf070fe ("can: isotp: serialize TX state transitions under so->rx_lock") Signed-off-by: Oliver Hartkopp Link: https://patch.msgid.link/20260724181525.43556-1-socketcan@hartkopp.net Cc: stable@kernel.org Signed-off-by: Marc Kleine-Budde Signed-off-by: Oliver Hartkopp Signed-off-by: Greg Kroah-Hartman 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=8acab9fc66d6f426c36968c91a979f70784945a7 ====================================================================== DETAILED REPORT METHODOLOGY ====================================================================== The original Linux kernel CVE announcement for CVE-2026-80889 can be found here: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-80889 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:U/C:L/I:L/A:H The Best / paranoid CVSS score: 5.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: 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 alexanjelausa@gmail.com (and both send reply to CVE record itself too and see "reply" button below for howto reply).