Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain local access with xfrm/netns control
-
DeliveryCreate and reference IPsec state_cache entry
-
ExploitRace two concurrent __xfrm_state_delete() calls
-
ExecutionSecond delete writes through LIST_POISON2 (write UAF)
-
ImpactGroom 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
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.
Primary rating from Vendor (Linux).
CVSS VectorVendor: Linux
Lifecycle Timeline
4DescriptionCVE.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
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.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-93158
GHSA-3cj7-gr4r-g9gh
NVD
CVE.org
EPSS
Exploit-DB