public inbox for [email protected]
 help / color / mirror / Atom feed
This is experimental automated Linux kernel CVE triage research. Results are heuristic and may be incorrect. This site is not an official vendor advisory or severity source.
* [CVE-2026-97921][LOW] tracing: Free histogram the field rejected for a bad modifier
@ 2026-09-26 18:14 AL-KERNEL
  0 siblings, 0 replies; only message in thread
From: AL-KERNEL @ 2026-09-26 18:14 UTC (permalink / raw)
  To: kernel-cve

CVE: CVE-2026-97921
Priority: LOW
AL-KERNEL base severity: LOW
KPANIC flag: NO
Patch: tracing: Free histogram the field rejected for a bad modifier
Commit: e787361bb6b0026ea3eb4d3fa7a304c7fcb99555
Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e787361bb6b0026ea3eb4d3fa7a304c7fcb99555
Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-97921
Analysis date: Sat, 26 Sep 2026 14:14:06 -0400
ActionableScore: 2
ActionableScore lower bound: 1
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-97921 is available here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-97921

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-97921	LOW	https://www.kernelcve.org/list/?q=CVE-2026-97921 CHECK WITH IMPACT FROM ORIG NN IMPORTANT	Maybe valid. Check manually. Hints by AL-KERNEL: The best (paranoid) CVSS is 'AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H';*CWE-401;*CWE-772;**CWE-400;Other CVSS 'AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:L';BEST CVSS score: '5.5';DESCR 'A memory leak occurs when tracing histogram parsing creates a field for a value or variable with a forbidden modifier and then rejects it before storing the field in hist_data fields. The normal histogram cleanup path cannot reach that allocation, so repeated invalid trigger writes can steadily consume kernel memory. A single or small number of writes has limited availability impact, while sustained abuse may eventually cause memory pressure or denial of service. For the CVSS the PR:L value is used for the paranoid score because some deployments may delegate write access to tracefs trigger files to a restricted local service or user, although typical systems require administrative tracing privileges. The issue is local and is not network reachable. There is no UAF, OOB access, information disclosure, or write primitive that would support confidentiality impact, integrity impact, or privilege escalation.';NO MANUAL CHECK; ,and ActionableScore result is Ordinary Moderate (with actual score 2)  SKIP CVE-2026-97921 UNKNOWN SKIP The Fixes patch not applied yet, so unlikely that actual: url YES  NO NO unknown 	MAYBE	TRACE LEAK UAF IMPROVEONLY LINUS  LOWERED_FROM_HIGH_BASED_ON_GUESSCVSS  DECREASED_TO_MODERATEREG_BASED_ON_ACTIONABLESCORELESSTHAN4 DECREASED_TO_LOW_FROM_MODERATE_BASED_ON_ACTIONABLESCORELESSTHAN3	-	-	checked

======================================================================
ACTIONABLESCORE ANALYSIS
======================================================================

ActionableScore=2
ActionableScoreLower=1
PrimitiveClass=NONE
RealUAF=NO
HostAdminRequired=UNKNOWN
NamespaceScopedPrivilege=UNKNOWN
ImportantCandidate=NO
ManualReview=NO
AutoDowngradeAllowed=YES

1. ActionableScore

* Raw conservative score: 1.
* Conservative score: 1. No floor or cap applied.
* Raw paranoid score: 2.
* Paranoid score: 2. No floor or cap applied.
* Final recommended bucket: **Ordinary Moderate**::

2. Signal breakdown

Conservative signals:

* +1 Concrete persistent kernel resource leak. A rejected histogram field and its modifier operand become unreachable from normal cleanup.
* No negative privilege score. Access to the relevant tracefs trigger file is not resolved sufficiently to establish host-admin-equivalent privilege.

Paranoid additional signal:

* +1 Meaningful accumulation potential. Repeated rejected writes produce persistent, approximately linear allocation growth and could eventually cause memory pressure through sustained abuse.

Not awarded:

* No UAF, stale post-lifetime access, double release, OOB access, or active-object corruption.
* No reliable kernel crash or immediate host-wide exhaustion is demonstrated.
* No controlled reclaim, arbitrary write, disclosure, integrity impact, privilege escalation, or security-boundary bypass.
* No remote-reachability point. The trigger is a local tracefs write.
* No race or timing penalty. The leak follows a deterministic error path.
* No additional availability point for merely theoretical eventual exhaustion.

Repeated-release checks:

* The path does not release an object and retain a dangling reference.
* No second lifetime or refcount mutation exists.
* Concrete repeated release/refcount +1 was not awarded.
* Paranoid repeated-refcount leverage was not awarded.
* REAL UAF FLOOR 5 does not apply.

3. Reachability analysis

The trigger is repeated writing of an invalid histogram expression to an event trigger file in tracefs. The supplied context does not establish the exact permission checks, mount ownership, or delegation policy, so HostAdminRequired remains UNKNOWN rather than assuming either host root or below-admin access.

Namespace-scoped access is not established. No network trigger, special hardware, race, or asynchronous timing is involved. Histogram trigger support and writable tracing files are prerequisites. CONFIG_DEBUG_KMEMLEAK is required only to detect the leak, not to trigger it. An attacker who can write the trigger can repeat the deterministic allocation failure path cheaply, but significant memory pressure requires sustained high-volume abuse.

4. Primitive and severity interpretation

The exact defect is a missing destruction operation after parse_expr creates hist_field but modifier validation rejects it before ownership is transferred to hist_data fields. The leaked object and its operand remain unreachable from destroy_hist_data.

This is a concrete resource leak, not a UAF or kernel memory-corruption primitive. There is no stale dereference, post-free mutation, attacker-controlled overwrite, or semantic reinterpretation. The demonstrated consequence is small persistent memory growth. Host-wide denial of service is a plausible sustained-abuse worst case but is not demonstrated as immediate or efficient.

PrimitiveClass is NONE because no corruption, stale-object use, authorization bypass, or independently useful exploitation primitive exists. ImportantCandidate is NO, and AutoDowngradeAllowed is YES because the issue is limited to deterministic resource leakage without an unresolved security-boundary or corruption primitive. Likely operational severity is Low to ordinary Moderate.

5. One-sentence report phrase

A missing cleanup call for rejected tracing histogram fields causes a repeatable local kernel memory leak that may lead to memory pressure under sustained abuse but provides no demonstrated memory corruption, disclosure, or privilege escalation primitive.

6. Manual review recommendation

NO MANUAL CHECK NEEDED

The patch establishes a straightforward resource leak with low per-operation impact and no corruption or security-boundary primitive, so deferred automated handling is reasonable.

7. Call-site confidence

Call-site confidence: high

======================================================================
UPSTREAM PATCH SUMMARY
======================================================================

Patch: tracing: Free histogram the field rejected for a bad modifier
Commit: e787361bb6b0026ea3eb4d3fa7a304c7fcb99555
Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e787361bb6b0026ea3eb4d3fa7a304c7fcb99555

Commit description:

Writing a hist trigger whose value or variable carries a modifier that is
not allowed there leaks the fields that were built for it.

__create_val_field() takes the field from parse_expr() and stores it in
hist_data->fields[] only after the modifier checks have run:

	hist_field = parse_expr(hist_data, file, field_str, flags, var_name,
				&n_subexprs);
	...
	if (hist_field->flags & HIST_FIELD_FL_VAR) {
		if (hist_field->flags & (...))
			goto err;
	} else {
		if (hist_field->flags & (...))
			goto err;
	}

	hist_data->fields[val_idx] = hist_field;

Both checks jump past that store, and the err label returns without
freeing anything. The error unwinds to create_hist_data(), which calls
destroy_hist_data() -> destroy_hist_fields(), and that reaches a field
only by walking fields[]. A field that never got there is unreachable.

commit e021343 ("tracing: Do not let histogram values have some
modifiers") set ret to -EINVAL and fell through to the store, which left
the field owned by fields[] and freed along with the rest of hist_data.
Splitting the check into a value case and a variable case replaced that
fall-through with a goto that skips it.

With CONFIG_DEBUG_KMEMLEAK, 200 writes of

  # echo 'hist:keys=prev_pid:vals=next_pid.log2' > \
	 events/sched/sched_switch/trigger

each correctly rejected with -EINVAL, leave 332 unreferenced objects
(63744 bytes) reported at create_hist_field(); 200 install and remove
cycles of a valid trigger leave none. A '.log2' field is two
allocations, since create_hist_field() puts the plain field in
operands[0] of the log2 field, and both are reported.

Use destroy_hist_field() rather than __destroy_hist_field() so that
operands[0] is freed as well. It returns early for HIST_FIELD_FL_VAR_REF,
which is what an operand owned by hist_data->var_refs[] needs; the
rejected field itself is never a var ref, because a var ref never carries
a modifier flag.

Cc: [email protected]
Fixes: e30fbc6 ("tracing/histograms: Allow variables to have some modifiers")
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Donggeun Yoo <[email protected]>
Signed-off-by: Steven Rostedt <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

Changed files:
  kernel/trace/trace_events_hist.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=e787361bb6b0026ea3eb4d3fa7a304c7fcb99555

======================================================================
DETAILED REPORT METHODOLOGY
======================================================================

The original Linux kernel CVE announcement for CVE-2026-97921 can be found here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-97921

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:L/PR:H/UI:N/S:U/C:N/I:N/A:L
  The Best / paranoid CVSS vector: AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
  The Best / paranoid CVSS score: 5.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: 1
  Paranoid ActionableScore: 2

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-26 18:14 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-26 18:14 [CVE-2026-97921][LOW] tracing: Free histogram the field rejected for a bad modifier AL-KERNEL

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox