Skip to main content

Linux Kernel EUVDEUVD-2026-39218

| CVE-2026-53267 HIGH
Uncontrolled Recursion (CWE-674)
2026-06-25 416baaa9-dc9f-4396-8d5f-8c081fb06d67 GHSA-mrf2-hc9c-229v
7.8
CVSS 3.1 · Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Share

Severity by source

Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.8 HIGH

Local-only stack corruption requiring CAP_NET_ADMIN to load nft rules (PR:L, AV:L); a simple two-expression ruleset reliably triggers it (AC:L), and kernel memory corruption yields full C/I/A impact.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative
Red Hat
6.6 MEDIUM
qualitative

Primary rating from Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67).

CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Jun 28, 2026 - 09:49 vuln.today
CVSS changed
Jun 28, 2026 - 08:22 NVD
7.8 (HIGH)
Patch available
Jun 25, 2026 - 10:32 EUVD
CVE Published
Jun 25, 2026 - 09:16 cve.org
HIGH 7.8
CVE Published
Jun 25, 2026 - 09:16 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

netfilter: nft_ct: bail out on template ct in get eval

I noticed this issue while looking at a historic syzbot report [1].

A rule like the one below is enough to trigger the bug:

table ip t { chain pre { type filter hook prerouting priority raw; ct zone set 1 ct original saddr 1.2.3.4 accept } }

The first expression attaches a per-cpu template ct via nft_ct_set_zone_eval() (nf_ct_tmpl_alloc -> kzalloc, tuple is all zero, nf_ct_l3num(ct) == 0). The next expression then calls nft_ct_get_eval() on the same skb, treats the template as a real ct and hits the 16-byte memcpy path. With dreg at NFT_REG32_15 this overflows past struct nft_regs on the kernel stack; with smaller dreg values it silently clobbers adjacent registers.

Reject template ct at the eval entry and in nft_ct_get_fast_eval(), mirroring the check nft_ct_set_eval() already has. Additionally, bound the address copy in NFT_CT_SRC / NFT_CT_DST by priv->len instead of by nf_ct_l3num(ct): nf_ct_get_tuple() zeroes the tuple before pkt_to_tuple() fills in only the protocol-relevant leading bytes, so the trailing bytes of tuple->{src,dst}.u3.all are well-defined zero. priv->len is validated at rule load, so the copy size is now bounded by the destination register rather than by an untrusted field on the conntrack.

[1]: https://syzkaller.appspot.com/bug?id=389cf09cb72926114fce90dc85a2c3231dcb647c

AnalysisAI

Stack-based out-of-bounds write in the Linux kernel netfilter nf_tables conntrack (nft_ct) module lets a local actor with rule-loading capability corrupt the kernel stack, enabling privilege escalation or denial of service. When an nftables ruleset attaches a per-CPU template conntrack (e.g. via 'ct zone set') and a subsequent 'ct original/reply' load expression runs on the same packet, nft_ct_get_eval() mistakes the zeroed template ct for a real conntrack and performs a 16-byte memcpy bounded by an untrusted field, overflowing struct nft_regs on the kernel stack. No public exploit identified at time of analysis, though a historic syzkaller report demonstrates the crash; EPSS risk is low (0.16%, 6th percentile).

Technical ContextAI

The flaw lives in nf_tables, the modern Linux packet-classification framework, specifically the conntrack expression (nft_ct) in net/netfilter/nft_ct.c. The conntrack 'set zone' path calls nf_ct_tmpl_alloc(), which kzalloc's a template ct with an all-zero tuple and nf_ct_l3num(ct)==0. The subsequent 'ct get' eval treats this template as a fully populated conntrack and, for NFT_CT_SRC/NFT_CT_DST, copies address bytes into a destination register using a length derived from the conntrack's L3 protocol number rather than the validated priv->len. Because the destination register can be NFT_REG32_15, the copy writes past the nft_regs structure on the kernel stack - a classic out-of-bounds/stack-overflow write (CWE-787 / CWE-121 class, though the record lists CWE as N/A). The fix rejects template ct at eval entry and in nft_ct_get_fast_eval(), and bounds the copy by priv->len, which is validated at rule load.

RemediationAI

Vendor-released patch: upgrade to a fixed stable kernel - 6.6.143, 6.12.94, 6.18.36, 7.0.13, or mainline 7.1 (or any later release on those branches), applying the build your distribution ships once it incorporates the netfilter nft_ct fix. The corrective commits are published at https://git.kernel.org/stable/c/3027ecbdb5fdf9200251c21d4818e4c447ef78e1 and the related stable hashes. Where immediate patching is not possible, the most effective compensating control is to deny the capability needed to load nftables rules: set 'sysctl kernel.unprivileged_userns_clone=0' (or user.max_user_namespaces=0) to stop unprivileged users from gaining CAP_NET_ADMIN inside user namespaces - at the cost of breaking rootless containers and some sandboxing. On hosts that do not need it, avoid granting CAP_NET_ADMIN to untrusted workloads and restrict who can manipulate nftables/conntrack rules. These controls reduce exposure but do not remove the underlying flaw, so schedule the kernel update.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

EUVD-2026-39218 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy