* [CVE-2026-80889][MODERATE REGULAR] can: isotp: fix timer drain order, wakeup handling and tx_gen ordering
@ 2026-09-04 21:44 AL-KERNEL
0 siblings, 0 replies; only message in thread
From: AL-KERNEL @ 2026-09-04 21:44 UTC (permalink / raw)
To: kernel-cve
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 <[email protected]>
Link: https://patch.msgid.link/[email protected]
Cc: [email protected]
Signed-off-by: Marc Kleine-Budde <[email protected]>
Signed-off-by: Oliver Hartkopp <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
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 [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-04 21:44 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-04 21:44 [CVE-2026-80889][MODERATE REGULAR] can: isotp: fix timer drain order, wakeup handling and tx_gen ordering AL-KERNEL
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox