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.
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [CVE-2023-52581][MODERATE REGULAR] netfilter: nf_tables: fix memleak when more than 255 elements expired
@ 2026-10-13  2:28 21% AL-KERNEL
  0 siblings, 0 replies; 1+ results
From: AL-KERNEL @ 2026-10-13  2:28 UTC (permalink / raw)
  To: kernel-cve

CVE: CVE-2023-52581
Priority: MODERATE REGULAR
AL-KERNEL base severity: MODERATE
KPANIC flag: NO
Patch: netfilter: nf_tables: fix memleak when more than 255 elements expired
Commit: 4aea243b6853d06c1d160a9955b759189aa02b14
Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4aea243b6853d06c1d160a9955b759189aa02b14
Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2023-52581
Analysis date: Mon, 12 Oct 2026 22:28:48 -0400
ActionableScore: 3
ActionableScore lower bound: unknown
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-2023-52581 is available here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2023-52581

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-2023-52581	MODERATE	https://www.kernelcve.org/list/?q=CVE-2023-52581 CHECK WITH IMPACT FROM ORIG NN IMPORTANT | AEGIS IMPACT MODERATE AEGIS_AS=1 LEGACY=MODERATE RESULT=SAME (legacy and Aegis reconciliation agree; DECISION: both MODERATE)	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-190;*CWE-401;*CWE-416;CWE-362;Other CVSS 'AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L';BEST CVSS score: '5.8';DESCR 'An integer wraparound in the nf_tables GC transaction counter can cause the same GC container to be reused after more than 255 expired elements, losing references to previously collected elements and creating a persistent memory leak. The affected paths also access gc after it has been submitted to asynchronous work or call_rcu, which creates a plausible use after free read if deferred destruction completes before the access. For the CVSS the PR:L value is used because triggering requires local nftables control with CAP_NET_ADMIN, which may be available to an untrusted user in an enabled user namespace or delegated container rather than requiring unrestricted host root. AC:H reflects the need to create a large batch of expiring elements and the timing dependency of the possible deferred free race. The issue is not directly network reachable through packet traffic. Impact is at least resource retention and local availability degradation. In the worst still defensible case, sustained accumulation may cause host memory pressure and the possible use after free read may permit limited confidentiality or integrity impact, so manual review is appropriate.';YES REQUIRES MANUAL CHECK; ,and ActionableScore result is Borderline / manual review recommended (with actual score 3)	MAYBE	REMOTE SIMPLEFIX NETFILTER RACE LEAK LINUS CVEOUTDATED  LOWERED_FROM_HIGH_BASED_ON_GUESSCVSS  DECREASED_TO_MODERATEREG_BASED_ON_ACTIONABLESCORELESSTHAN4	-	-	checked

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

ActionableScore=3
PrimitiveClass=CLASS_B
RealUAF=YES
HostAdminRequired=UNKNOWN
NamespaceScopedPrivilege=UNKNOWN
ImportantCandidate=NO
ManualReview=RECOMMENDED
AutoDowngradeAllowed=YES
RequiresHostUID0=UNKNOWN
AuthorizationDecisionBypass=NO
ProtectedResourceImpact=NONE
B4PendingReview=NO
B4PendingConfirmed=NO

1. ActionableScore

* Raw conservative score: 3
* Conservative score: 3
* Raw paranoid score: 3
* Paranoid score: 3
* No floor or cap changed either score.
* Final recommended bucket: **Borderline / manual review recommended**::

2. Signal breakdown

Positive signals:

* +2 Real UAF or lifetime violation. Both queue paths read `gc->set` after transferring `gc` to asynchronous work or `call_rcu()`. Destruction can therefore race with the subsequent field access.
* +1 Concrete persistent kernel resource leak. The `u8` counter wraps after 255 entries, causing reuse of the original GC container and permanent loss of references to previously collected elements.

Negative signals:

* No negative points. Host-admin privilege, namespace reachability, and materially hard timing are not positively established.

Material non-awarded signals:

* No crash point. The commit demonstrates a leak and unsafe post-handoff dereference but does not report an Oops or panic.
* No extra resource-exhaustion point. Repeated batches can accumulate leaks, but practical attacker control and host-wide exhaustion are not established.
* No structured stale-object leverage. Only `gc->set` is read, with no controlled reclaim, attacker-shaped replacement, callback consumption, or directed memory operation shown.
* No arbitrary write, disclosure, authorization bypass, COW violation, LPE, or remote packet-triggered path is established.
* B5-R does not apply because no heap OOB write exists.
* B3-PENDING does not apply because no shared-backing write exists.
* B4-PENDING does not apply because no authorization decision changes from DENY to ALLOW.
* No concrete repeated release or refcount mutation occurs on the same dangling reference. The dedicated +1 and UAF floor 5 therefore do not apply.
* No paranoid point is added merely because allocator reuse or stronger UAF consequences are theoretically possible.

3. Reachability analysis

The vulnerable GC path requires more than 255 expired nftables set elements. Creating the relevant rules or set state normally involves nftables control and CAP_NET_ADMIN, but the supplied context does not identify the exact capability check, its governing user namespace, or whether a previously configured dynamic set can be exercised by a less-privileged traffic source.

Accordingly, host-admin-equivalent privilege is not proven, but complete below-host-admin reachability is also not proven. Namespace-scoped privilege remains unknown. A prior privileged ruleset setup may be relevant, but it is not established as mandatory for the evaluated attacker model.

There is no evidence of special hardware or boot-mode requirements. The post-handoff dereference is timing-sensitive, but the evidence does not establish that the race is materially difficult or externally uncontrollable, so no race penalty is applied. Direct remote reachability through packet traffic is not established.

4. Primitive and severity interpretation

The exact defects are:

* an `u8` wraparound that prevents GC container rotation and loses references to expired elements;
* a post-ownership-transfer read of `gc->set` after asynchronous work or RCU destruction has been scheduled.

The second defect is a real, directly implied lifetime violation involving a structured GC object, so it is CLASS_B rather than a pure bookkeeping issue. However, the stale operation is a single field read used to allocate the replacement container. There is no demonstrated controlled replacement, post-free write, callback dispatch, repeated refcount mutation, disclosure, or authorization-boundary consequence.

The demonstrated practical consequence is persistent leakage. A crash is plausible if the deferred free wins the race, but it is not demonstrated. Stronger confidentiality, integrity, or privilege-escalation effects remain speculative.

ImportantCandidate is NO because meaningful exploitation leverage beyond the constrained stale read has not been established. AutoDowngradeAllowed is YES because this is not a strong active-object UAF, repeated-release case, controlled corruption primitive, or security-boundary bypass. Operationally, it is a borderline Moderate issue that merits review but does not require Important preservation from the supplied evidence.

5. One-sentence report phrase

An nf_tables GC counter wrap causes persistent element leaks, while reading the GC object after asynchronous or RCU retirement creates a constrained use-after-free race without a demonstrated write, disclosure, or privilege-escalation primitive.

6. Manual review recommendation

MANUAL CHECK RECOMMENDED

The post-handoff dereference is a genuine lifetime defect, but the visible stale use is constrained and the complete privilege and trigger boundaries remain unresolved.

7. Call-site confidence

Call-site confidence: medium

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

Patch: netfilter: nf_tables: fix memleak when more than 255 elements expired
Commit: 4aea243b6853d06c1d160a9955b759189aa02b14
Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4aea243b6853d06c1d160a9955b759189aa02b14

Commit description:

When more than 255 elements expired we're supposed to switch to a new gc
container structure.

This never happens: u8 type will wrap before reaching the boundary
and nft_trans_gc_space() always returns true.

This means we recycle the initial gc container structure and
lose track of the elements that came before.

While at it, don't deref 'gc' after we've passed it to call_rcu.

Fixes: 5f68718 ("netfilter: nf_tables: GC transaction API to avoid race with control plane")
Reported-by: Pablo Neira Ayuso <[email protected]>
Signed-off-by: Florian Westphal <[email protected]>
Signed-off-by: Pablo Neira Ayuso <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>

Changed files:
  include/net/netfilter/nf_tables.h
  net/netfilter/nf_tables_api.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=4aea243b6853d06c1d160a9955b759189aa02b14

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

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

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:L
  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: unknown
  Paranoid ActionableScore: 3

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	[relevance 21%]

Results 1-1 of 1 | reverse | sort options + mbox downloads above
-- links below jump to the message on this page --
2026-10-13  2:28 21% [CVE-2023-52581][MODERATE REGULAR] netfilter: nf_tables: fix memleak when more than 255 elements expired AL-KERNEL

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