Skip to main content

Linux Kernel CVE-2026-98230

| EUVDEUVD-2026-93158 HIGH
2026-10-06 Linux GHSA-3cj7-gr4r-g9gh
7.0
CVSS 3.1 · Vendor: Linux
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain local access with xfrm/netns control
  2. Delivery
    Create and reference IPsec state_cache entry
  3. Exploit
    Race two concurrent __xfrm_state_delete() calls
  4. Execution
    Second delete writes through LIST_POISON2 (write UAF)
  5. Impact
    Groom reused slab to corrupt kernel memory / escalate privileges

Vulnerability Assessment

Exploitation Conditions

Requires the Linux XFRM/IPsec state framework to be in active use and the attacker to be able to add and delete xfrm states - an operation normally gated by CAP_NET_ADMIN, which unprivileged users can obtain within a user+network namespace (relevant to container escapes). The specific trigger is a double __xfrm_state_delete() on the same state, so the attacker must induce or win a race where the same state_cache/state_cache_input node is unlinked twice; this is a timing-dependent condition (reflected as AC:H), not reachable by a single deterministic call. Limiting factors: exploitation is local only (no network vector despite the networking subsystem), requires existing privileges to manipulate xfrm state, requires winning the delete/delete race and grooming the slab after reuse, and is moot on kernels already patched to the fixed stable versions.

Impact

Signals point consistently to a real-but-not-urgent kernel memory-corruption bug rather than a mass-exploitation priority. The CVSS 3.1 vector (AV:L/AC:H/PR:L/UI:N) describes a local, high-complexity, low-privilege race condition - a second concurrent __xfrm_state_delete() on the same xfrm_state causes a write use-after-free through LIST_POISON2, which in turn spawns a read use-after-free during an RCU hlist traversal. The 7.0 (High) score is driven entirely by the C:H/I:H/A:H kernel-memory impact, not by ease of reach: AC:H reflects that the attacker must win a delete/delete race, and AV:L means no remote reach despite xfrm being a networking (IPsec) subsystem. This aligns with the low EPSS of 0.21% (10th percentile), the absence of CISA KEV listing, and no public PoC - so there is no evidence of active or impending widespread exploitation. The 'Information Disclosure' tag understates the issue: the root cause is a write use-after-free (memory corruption / potential privilege escalation) that only secondarily yields a read UAF; treat this as a corruption primitive, not merely info leak. Net: patch on a normal kernel-maintenance cadence; this is not a drop-everything issue absent a target-specific threat model involving untrusted local users or containers with CAP_NET_ADMIN in a network namespace.

Exploit ScenarioDerived

A local attacker with the ability to create and tear down IPsec/XFRM states (e.g. a user holding CAP_NET_ADMIN, including inside an unprivileged user+network namespace) races two __xfrm_state_delete() calls against the same state so the state_cache/state_cache_input node is deleted twice, driving a write through LIST_POISON2 after the slab is reused. By grooming the kernel slab to control the reused object, this write use-after-free can be steered toward memory corruption and potential local privilege escalation, with a follow-on read UAF in xfrm_input_state_lookup(). No public exploit or PoC is identified at time of analysis, and the high attack complexity (winning the race) makes reliable exploitation non-trivial.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 07, 2026

A write use-after-free in the Linux kernel's XFRM (IPsec) state framework allows a local attacker who can add and delete xfrm states to corrupt freed slab memory, which in turn spawns a read use-after-free during state lookup. The defect is an incomplete fix: commit 14acf9652e56 switched the bydst/bysrc/byseq/byspi hash lists to hlist_del_init_rcu() but missed state_cache and state_cache_input, so a second __xfrm_state_delete() on the same state writes through the LIST_POISON2 pprev value instead of becoming a harmless no-op. Exploitation requires low privileges (CVSS PR:L, AV:L) - realistically the ability to manipulate xfrm state, normally gated by CAP_NET_ADMIN, which unprivileged users can obtain inside a user plus network namespace - and the attacker must win a timing-dependent delete/delete race (AC:H), so this is a real but not urgent kernel memory-corruption bug rather than a mass-exploitation priority: no public exploit identified at time of analysis, EPSS 0.21% (10th percentile), and no CISA KEV listing.

RemediationAI

Vendor-released patch: upgrade to Linux kernel 6.12.112, 6.18.54, 7.2.8 or 7.3-rc4 (or any later stable release carrying the fix commits 4748c27e2e6a1969e02f1df46e62f79d2799b80b, 2afb8dc1f4390f164db8352f8e685e126e9db566, 9b74a47a4cbd0d29faff4f3b199212c73e6b6220 or fb38fb7420d5f7192f9e2b6ac835ede149cd7ac5); the change simply makes state_cache and state_cache_input use hlist_del_init_rcu(), matching the four lists fixed earlier, so it carries no behavioural side effects. Where immediate kernel upgrades are not possible, priority should go to removing the privilege path that makes the bug reachable: disable unprivileged user namespaces (sysctl kernel.unprivileged_userns_clone=0 on distributions that expose it, or user.max_user_namespaces=0 upstream), since CAP_NET_ADMIN inside a user plus network namespace is what lets an unprivileged local attacker add and delete xfrm states - the trade-off is that rootless containers, Flatpak/snap sandboxes and similar tooling will stop working. If user namespaces must stay enabled, restrict net-namespace creation to trusted workloads and avoid IPsec/xfrm state churn on multi-tenant hosts until the kernel is patched; note that simply avoiding double deletes in userspace tooling is not a reliable control because the race is timing-dependent and the corruption also manifests on normal lookup paths (xfrm_input_state_lookup()). No vendor-supplied workaround other than the patched versions is documented, and the EPSS score of 0.21% with no KEV listing supports a scheduled rather than emergency patch cadence.

Affected VersionsENISA

Linux 5e4334dc39443645415450163ff5ff1ee7e79784
Linux 0045e3d80613cc7174dc15f189ee6fc4e73b9365 <4748c27e2e6a1969e02f1df46e62f79d2799b80b
Linux patch: 6.18.54
Linux patch: 6.12.112
Linux 0045e3d80613cc7174dc15f189ee6fc4e73b9365 <2afb8dc1f4390f164db8352f8e685e126e9db566
Linux patch: 0
Linux patch: 7.2.8
Linux 6.12.13 <6.12.112
Linux patch: 7.3-rc4
Linux aa48a18fdb0911572d133057cd579db704b87da4 <fb38fb7420d5f7192f9e2b6ac835ede149cd7ac5
Linux 6.13
Linux 0045e3d80613cc7174dc15f189ee6fc4e73b9365 <9b74a47a4cbd0d29faff4f3b199212c73e6b6220

Affected Packages

euvd linux fix: 6.12.112

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

XFRM is the Linux kernel's IPsec transform framework; each xfrm_state object is simultaneously threaded onto several RCU-protected hash lists (bydst, bysrc, byseq, byspi, plus the cache lists state_cache and state_cache_input), each node being an hlist_node whose pprev pointer is rewritten by __hlist_del(). The RCU variants differ in a way that matters here: hlist_del_rcu() leaves pprev = LIST_POISON2 (a non-NULL sentinel), so hlist_unhashed() still returns false, whereas hlist_del_init_rcu() leaves pprev = NULL so hlist_unhashed() returns true. After an earlier hardening commit converted four of the six lists, a second __xfrm_state_delete() on an already-unlinked state still passed the hlist_unhashed() check for the two cache lists, re-entered __hlist_del() and executed WRITE_ONCE(*pprev, next) through LIST_POISON2 - a write use-after-free once the slab object is reused. That corruption can leave a dangling next pointer in the bucket, so a later hlist_for_each_entry_rcu traversal (observed in xfrm_input_state_lookup()) dereferences freed memory, giving the read use-after-free classified under the Information Disclosure tag. No CWE identifier was assigned in the source data, but the weakness class is a use-after-free (write, then read) rooted in inconsistent double-unlink protection across sibling hash lists. Affected component is tracked by CPE cpe:2.3:a:linux:linux:*:*:*:*:*:*:*:* and ENISA EUVD-2026-93158, with upstream fixes in the kernel XFRM code.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Linux) PRIMARY 7.0 HIGH
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.0 HIGH

Local xfrm-state manipulation (AV:L, PR:L for CAP_NET_ADMIN/namespaced); winning the double-delete race is AC:H; kernel write UAF gives full C/I/A impact in an unchanged scope.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

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

Lifecycle Timeline

4
CVSS changed
Oct 07, 2026 - 07:22 NVD
7.0 (HIGH)
Patch available
Oct 06, 2026 - 10:02 EUVD
CVE Published
Oct 06, 2026 - 08:45 cve.org
HIGH 7.0
CVE Published
Oct 06, 2026 - 08:45 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

xfrm: use hlist_del_init_rcu for state_cache and state_cache_input

Commit 14acf9652e56 ("xfrm: defensively unhash xfrm_state lists in __xfrm_state_delete") converted bydst/bysrc/byseq/byspi from hlist_del_rcu() to hlist_del_init_rcu() so that a second __xfrm_state_delete() on the same object becomes a no-op rather than a write through LIST_POISON pprev. It missed state_cache and state_cache_input, which kept hlist_del_rcu():

  • hlist_del_rcu() leaves pprev = LIST_POISON2 (non-NULL), so

hlist_unhashed() returns false.

  • hlist_del_init_rcu() leaves pprev = NULL, so hlist_unhashed()

returns true.

A second __xfrm_state_delete() therefore enters __hlist_del() on the already-deleted state_cache/state_cache_input nodes and does WRITE_ONCE(*pprev, next) through LIST_POISON2 - a write use-after-free once the slab is reused. The corruption can in turn cause a subsequent hlist_for_each_entry_rcu traversal to follow a dangling next pointer, producing the read use-after-free reported in xfrm_input_state_lookup().

Switch state_cache and state_cache_input to hlist_del_init_rcu() to match the other four lists, closing the write use-after-free and, with it, the read use-after-free it spawns.

Executive ViewAI

Why It Matters

Affected Linux systems carry a kernel-level memory-corruption risk that could allow a local user to break host isolation or cause service disruption, with the greatest concern in multi-tenant and containerized environments. While there is no public exploit identified at time of analysis and exploitation requires a difficult timing condition, the flaw still warrants prioritized patching because a successful attack could compromise the underlying host.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Ubiquitous
Linux kernel runs on a huge fraction of servers, devices, and containers
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
High

Priority Score

35
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +35
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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