From: AL-KERNEL <[email protected]>
To: [email protected]
Subject: [CVE-2026-98555][IMPORTANT] llc: fix skb UAF and leaks on llc_mac_hdr_init() failure [ Upstream
Date: Mon, 19 Oct 2026 00:32:25 -0400 [thread overview]
Message-ID: <[email protected]> (raw)
CVE: CVE-2026-98555
Priority: IMPORTANT
AL-KERNEL base severity: IMPORTANT
KPANIC flag: YES
Patch: llc: fix skb UAF and leaks on llc_mac_hdr_init() failure [ Upstream
Commit: fec0fe6838a7f45175667701fb51abb23a6ffb1e
Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=fec0fe6838a7f45175667701fb51abb23a6ffb1e
Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-98555
Analysis date: Mon, 19 Oct 2026 00:32:25 -0400
ActionableScore: 6
ActionableScore lower bound: 5
Actionable bucket: Actionable Moderate / Strong Important candidate requiring manual review
Manual review required: YES
Summary:
An LLC MAC-header initialization error can free the original skb, read sequence data after its lifetime ends, and later release the same skb again, creating a confirmed UAF and double-free that requires mandatory exploitation-leverage review.
======================================================================
ABOUT THIS REPORT
======================================================================
The original Linux kernel CVE announcement for CVE-2026-98555 is available here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-98555
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: IMPORTANT
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-98555 IMPORTANT https://www.kernelcve.org/list/?q=CVE-2026-98555 CHECK WITH IMPACT FROM ORIG NN LOW | AEGIS IMPACT MODERATE_KPANIC AEGIS_AS=4 LEGACY=IMPORTANT RESULT=DIFF INDEPENDENT_LEGACY=IMPORTANT INDEPENDENT_RESULT=DIFF TEMP_KPANIC_MERGE=IMPORTANT_WINS_DISAGREEMENT PRE_MERGE_LEGACY=IMPORTANT (final Legacy and Aegis differ; FINAL: IMPORTANT, Aegis: MODERATE_KPANIC) Maybe valid. Check manually. Hints by AL-KERNEL: The best (paranoid) CVSS is 'AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H';*CWE-416;CWE-415;*CWE-401;Other CVSS 'AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H';BEST CVSS score: '7.5';DESCR 'An LLC connection error path frees the original skb instead of the newly allocated nskb when `llc_mac_hdr_init()` fails. The function then reads LLC sequence data through a pointer backed by the freed skb, and later processing can release the same skb again, creating a confirmed use-after-free read and double-free. Separate XID and TEST response paths also leak nskb on the same header initialization failure. Reliable triggering requires a specific LLC state transition and a failure in MAC header initialization, so attack complexity is high. For the CVSS the PR:N value is used in the paranoid score because an adjacent attacker may influence LLC connection state through L2 frames without an account on the target, although the base score uses PR:L for the more reliable local trigger model. Impact is at least denial of service through a kernel crash and may include confidentiality or integrity impact if the double-free produces exploitable allocator corruption. LLC is generally limited to the local L2 segment and is not normally reachable through the routed public Internet. Automated impact decision path. The original SimpleNet classifier selected LOW. The primary LLM estimated paranoid CVSS 7.5 and the production ActionableScore returned 6 with recommendation Actionable Moderate / Strong Important candidate requiring manual review. The production rules then evaluated CVSS thresholds and ActionableScore thresholds. Recorded rule transitions were CVSS and initial triage stage LOW to MODERATE_KPANIC because the ActionableScore threshold rule was applied. ActionableScore thresholds stage MODERATE_KPANIC to IMPORTANT because the ActionableScore threshold rule was applied. The legacy KP specialist produced a review artifact and its decision was processed by the applicable KP rules. The legacy FD or DH downgrade specialist produced a review artifact and its decision was processed by the applicable downgrade and preservation rules. Exact triggered rule markers were INCREASED_TO_MODERATE7_FROM_LOW_BASED_ON_GUESSCVSS_AND_ACTIONABLESCOREHIGHER4 and INCREASED_TO_HIGH_BASED_ON_ACTIONABLESCOREHIGHERTHAN5 and TEMP_KPANIC_MERGE_IMPORTANT_WINS. The independent weaker Aegis shadow evaluated CVSS 5.6 and ActionableScore 4 with primitive class CLASS_B and manual review REQUIRED. Its independently reconciled impact was MODERATE_KPANIC. Cross model aggregation changed the production result under an enabled evidence gated merge rule. The final reported impact is IMPORTANT.';YES REQUIRES MANUAL CHECK; ,and ActionableScore result is Actionable Moderate / Strong Important candidate requiring manual review (with actual score 6) MAYBE REMOTE READ LEAK ERRORPATH UAF SKB LINUS KPANIC INCREASED_TO_MODERATE7_FROM_LOW_BASED_ON_GUESSCVSS_AND_ACTIONABLESCOREHIGHER4 KPANIC INCREASED_TO_HIGH_BASED_ON_ACTIONABLESCOREHIGHERTHAN5 TEMP_KPANIC_MERGE_IMPORTANT_WINS - - checked
======================================================================
ACTIONABLESCORE ANALYSIS
======================================================================
ActionableScore=6
ActionableScoreLower=5
PrimitiveClass=CLASS_B
RealUAF=YES
HostAdminRequired=UNKNOWN
NamespaceScopedPrivilege=UNKNOWN
ImportantCandidate=YES
ManualReview=REQUIRED
AutoDowngradeAllowed=NO
RequiresHostUID0=UNKNOWN
AuthorizationDecisionBypass=NO
ProtectedResourceImpact=NONE
B4PendingReview=NO
B4PendingConfirmed=NO
## 1. ActionableScore
* Raw conservative score: 5
* Conservative score: 5
* Raw paranoid score: 6
* Paranoid score: 6
* No cap changed either score. The repeated-release mechanics satisfy FLOOR 5, but the conservative raw score was already 5.
* Final recommended bucket: **Actionable Moderate / Strong Important candidate requiring manual review**::
## 2. Signal breakdown
Conservative signals:
* +2 Real UAF and lifetime violation. `kfree_skb(skb)` can free the original skb, after which `LLC_I_GET_NR(pdu)` reads data backed by that freed skb.
* +1 Concrete repeated release. The same skb reference remains in the surrounding state-machine path, and `llc_conn_state_process()` subsequently drops it again.
* +1 Realistic kernel crash. The second skb release can access or modify lifetime metadata in freed storage and can produce a double-free fault or allocator corruption.
* +1 Concrete resource leak. The newly allocated nskb is lost in the connection error path, and two additional SAP response paths also omit its release.
Paranoid-only signal:
* +1 Repeated-refcount leverage. The second release is a concrete write-like lifetime operation through storage whose skb lifetime may already have ended. This is stronger than generic theoretical reclaim but does not establish controlled reclaim.
Repeated-release checks:
* The first `kfree_skb(skb)` can end the skb lifetime: yes.
* The exact same skb reference survives: yes, according to the documented caller behavior.
* The later operation is a real release and lifetime mutation: yes.
* Concrete repeated release/refcount +1 awarded: yes.
* Paranoid repeated-refcount leverage +1 awarded: yes.
* FLOOR 5 applicable: yes, with no numeric adjustment required.
Not awarded:
* No remote or adjacent-network bonus. LLC traffic may influence state transitions, but the supplied evidence does not establish that a peer can force `llc_mac_hdr_init()` to fail.
* No local-unprivileged bonus. AF_LLC may be accessible below host administration, but control of the complete failing sequence is unresolved.
* No structured stale-object leverage bonus separate from repeated release. The meaningful second operation is already scored under the dedicated lifetime-mutation rule.
* No Weak LPE or Strong LPE bonus. Controlled reclaim, refcount takeover, callback influence, and directed corruption are not demonstrated.
* No confidentiality or integrity bonus. The UAF read and double-free establish lifetime corruption, but no disclosure or protected-state modification is shown.
* No extra Availability point. The possible double-free crash is already counted once.
* No timing penalty. This is an ordered error-path bug, not a demonstrated narrow race.
* NEW52 B5-R does not apply because there is no retry-accumulated OOB write.
* NEW53 B3-PENDING does not apply because no shared-backing write is established.
* V32, V33, and V34 do not apply because no checksum-placement write or downstream metadata-corruption chain exists.
* B4 authorization-state preservation does not apply because no authorization decision is involved.
## 3. Reachability analysis
The vulnerable connection path requires an LLC connection or state-machine operation that reaches the resend action and then receives an error from `llc_mac_hdr_init()`. A local AF_LLC user or an adjacent LLC peer may influence connection state, but the supplied patch does not establish which actor can reliably force the MAC-header initialization failure.
LLC operates at L2 and is generally not reachable through routed Internet traffic. Adjacent reachability alone is insufficient because ordinary incoming frames do not necessarily control the failing local header-construction condition.
The evidence does not establish that host-admin powers or host UID 0 are required. It also does not establish that an ordinary user can complete the trigger, so `HostAdminRequired` remains UNKNOWN. Whether all necessary socket, device, and LLC operations work within an attacker-created user and network namespace is likewise unresolved.
No special hardware or narrow race is required by the patch. An active LLC configuration and a reachable failure condition are prerequisites, but their privilege and repeatability properties require call-path validation.
## 4. Primitive and severity interpretation
The exact primitive is a wrong-object free followed by a post-free read and a later second release of the original skb. The skb is an active structured kernel object rather than fixed stale storage.
This is category B repeated lifetime corruption, not merely an ordinary cleanup dereference:
1. `kfree_skb(skb)` may destroy the original object.
2. `pdu` is then consumed through `LLC_I_GET_NR(pdu)`.
3. The same skb reference remains owned by the caller.
4. Later processing drops that reference again, performing another lifetime mutation.
The second release makes this stronger than a shallow UAF read or immediate poisoned-pointer crash. It remains CLASS_B because no controlled reclaim, attacker-shaped replacement object, arbitrary write, callback control, or refcount takeover is established.
The demonstrated consequences are a UAF read, double-free, and memory leaks. Kernel crash and allocator damage are realistic. Privilege escalation and confidentiality impact remain unresolved possibilities rather than demonstrated outcomes.
`ImportantCandidate=YES` and `AutoDowngradeAllowed=NO` are appropriate because the exact same potentially dangling skb undergoes a concrete second lifetime mutation. Automatic crash-only classification would discard meaningful unresolved post-lifetime corruption leverage. This does not independently prove Important severity or CLASS_A exploitation.
## 5. One-sentence report phrase
An LLC MAC-header initialization error can free the original skb, read sequence data after its lifetime ends, and later release the same skb again, creating a confirmed UAF and double-free that requires mandatory exploitation-leverage review.
## 6. Manual review recommendation
MANUAL CHECK REQUIRED
The exact repeated skb release is established and can mutate allocator or reference state after object lifetime ends, while trigger privileges, adjacent reachability, and post-free exploitation leverage remain unresolved.
## 7. Call-site confidence
Call-site confidence: high
======================================================================
UPSTREAM PATCH SUMMARY
======================================================================
Patch: llc: fix skb UAF and leaks on llc_mac_hdr_init() failure [ Upstream
Commit: fec0fe6838a7f45175667701fb51abb23a6ffb1e
Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=fec0fe6838a7f45175667701fb51abb23a6ffb1e
Changed files:
net/llc/llc_c_ac.c
net/llc/llc_s_ac.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=fec0fe6838a7f45175667701fb51abb23a6ffb1e
======================================================================
DETAILED REPORT METHODOLOGY
======================================================================
The original Linux kernel CVE announcement for CVE-2026-98555 can be found here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-98555
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:L/I:L/A:H
The Best / paranoid CVSS vector: AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
The Best / paranoid CVSS score: 7.5
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: 5
Paranoid ActionableScore: 6
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: IMPORTANT
KPANIC detected for this report: YES
Published priority for this report (same as in Subject): IMPORTANT
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-10-19 4:32 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-98555.e8c04f5933ca0d92973ba8c5@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