Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain local access to IPsec/xfrm host
-
DeliveryTrigger xfrm transport-mode packet reinjection
-
ExploitRace concurrent netdevice unregistration
-
ExecutionWorkqueue callback dereferences freed dst/dev
-
ImpactUse-after-free kernel crash
Vulnerability Assessment
| Exploitation Conditions | Requires the host to actually process IPsec/xfrm transport-mode traffic, since the vulnerable path is xfrm_trans_reinject() reinjecting transport-mode packets deferred through a workqueue (behavior introduced by commit 4f4920669d21). The dangerous condition arises specifically when queued skbs carry non-refcounted (noref) dst entries (e.g. from ip_route_input_noref) AND a network device is concurrently unregistered so dst_dev_put() swaps dst->dev for blackhole_netdev - the finish callback then runs in process (workqueue) context lacking the RCU read lock and refcounts. Limiting factors: exploitation is a timing-sensitive race requiring the netdevice-unregistration window to overlap with queued reinjection; it needs local low-privilege access per the CVSS PR:L rating; and it only affects kernels built with CONFIG_PREEMPT_RCU where local_bh_disable() does not establish an RCU read-side critical section. Not exploitable against hosts not using xfrm transport mode. |
| Impact | Signals converge on LOW real-world priority despite the 7.8 'High' CVSS. The vendor (Linux kernel CNA) vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H claims local, low-complexity, low-privilege access with full High confidentiality/integrity/availability impact, but this appears inflated relative to the actual defect: the issue was surfaced by a syzbot RCU-lockdep warning in ip6_pkt_drop() and the fix adds missing rcu_read_lock(), skb_dst_force() and dev_hold() around xfrm_trans_reinject(). The underlying danger is a use-after-free of non-refcounted dst entries and of skb->dev (replaced by blackhole_netdev on netdevice unregistration) while packets sit queued in a workqueue - a race condition, which contradicts the vendor's AC:L rating; a concurrent netdevice-unregistration window realistically makes this AC:H. EPSS is 0.18% (7th percentile) - very low exploitation probability. There is no CISA KEV listing and no public exploit identified. SSVC-style read: exploitation = none observed, automatable = no (timing-dependent kernel race requiring IPsec/xfrm transport-mode processing), technical impact = partial-to-total but hard to weaponize. Net: a legitimate correctness/UAF fix worth patching in normal cycles, not an emergency. Note the conflict explicitly: CVSS claims C:H/I:H but the demonstrated manifestation is an RCU lockdep warning / potential crash, so the H/H/H impact is unverified - treat as primarily an availability (crash) risk unless vendor confirms memory-corruption-to-privesc. |
| Exploit ScenarioDerived | On a host using IPsec/xfrm transport mode, a local low-privileged actor induces xfrm transport-mode packet reinjection (processed via workqueue) while a network device is being unregistered, causing a finish callback to dereference a now-freed or blackholed dst/skb->dev. The resulting use-after-free most plausibly crashes the kernel (DoS). No public proof-of-concept exists; the flaw was found by syzbot fuzzing, not a released exploit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
A use-after-free and RCU-safety defect in the Linux kernel's IPsec/xfrm transport-mode packet reinjection path can crash or corrupt the kernel, and is reachable by a local low-privilege attacker (CVSS PR:L) who can also trigger network device unregistration. The flaw was introduced when xfrm_trans_reinject() was converted from a tasklet to a workqueue (commit 4f4920669d21), so finish callbacks such as ip6_rcv_finish() now run in process context without an RCU read-side critical section, and queued skbs may hold non-refcounted dst entries whose skb->dev is not kept alive while deferred. Our independent assessment scores this CVSS 3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H (availability-only, high attack complexity), and there is no public exploit identified at time of analysis; EPSS is low at 0.18% (7th percentile) and no CISA KEV listing exists.
RemediationAI
Vendor-released patch: upgrade to a fixed kernel - Linux 5.15.222, 6.1.189, 6.6.158, 6.12.112, 6.18.54, 7.2.8, or 7.3-rc4, or apply the corresponding stable commits (e.g. https://git.kernel.org/stable/c/41e47f1664be86c91326f0afe0504a1162d00907 and its siblings 6601d91a8576, 0cda8273265d, 68a317b4aec8, 6eb3b071be8e, 664fc0941df7, d2f5082f9e84). Because the fix touches xfrm reinjection, rebooting into the patched image is required to clear any packet already deferred on the workqueue. If immediate upgrading is not possible, compensating controls are limited and must be weighed against function loss: stop using xfrm transport mode on the host (switch IPSec to tunnel mode or terminate it elsewhere), which removes the vulnerable reinjection path entirely but changes network architecture and may break clients expecting transport-mode protection; restrict local interactive access and privilege escalation so that PR:L-level users cannot race netdevice unregistration (e.g. keep CAP_NET_ADMIN and device teardown paths out of untrusted hands), which reduces reachability but does not eliminate the race; and avoid removing or renaming netdevices while IPsec transport-mode traffic is in flight, since device unregistration is the trigger for the blackhole_netdev dst swap - a purely operational mitigation with no code enforcement. There is no reliable runtime toggle for this code path, so patching remains the primary and recommended action.
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
The affected code is the xfrm transport-mode reinjection machinery in net/xfrm/xfrm_input.c (xfrm_trans_reinject() around line 806 and xfrm_trans_queue_net()), covered by CPE cpe:2.3:a:linux:linux. Historically this reinjection loop ran from a tasklet in softirq context, where local_bh_disable() implied an RCU read-side critical section; commit 4f4920669d21 ('xfrm: Reinject transport-mode packets through workqueue') moved it into a workqueue worker in process context, which under CONFIG_PREEMPT_RCU does not establish such a critical section. Consequently finish callbacks (ip6_rcv_finish, ip6_pkt_drop/ip6_pkt_discard, route and l3mdev lookups) perform rcu_dereference_check() operations without the lock, triggering syzbot's 'suspicious RCU usage' warning via __in6_dev_get_safely in include/net/addrconf.h. Compounding this, skbs queued through xfrm_trans_queue_net() can carry non-refcounted (noref) dst entries from ip_route_input_noref(), and on netdevice unregistration dst_dev_put() rewrites dst->dev to blackhole_netdev, so dst no longer pins skb->dev across workqueue deferral - creating a genuine use-after-free window rather than a cosmetic lockdep splat. The upstream fix adds skb_dst_force(skb) in xfrm_trans_queue_net() while still inside the caller's RCU section, takes dev_hold()/dev_put() around the deferral, and wraps the finish-callback loop in xfrm_trans_reinject() with rcu_read_lock().
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:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Timing-dependent race needing concurrent netdevice unregistration (AC:H) and local IPsec/xfrm use (AV:L, PR:L); demonstrated impact is a use-after-free crash, so availability-only (A:H).
Primary rating from Vendor (Linux).
CVSS VectorVendor: Linux
Lifecycle Timeline
4DescriptionCVE.org
In the Linux kernel, the following vulnerability has been resolved:
xfrm: add missing rcu_read_lock(), skb_dst_force() and dev_hold() for xfrm_trans_reinject()
syzbot reported a suspicious RCU usage warning in ip6_pkt_drop():
WARNING: suspicious RCU usage in ip6_pkt_drop include/net/addrconf.h:389 suspicious rcu_dereference_check() usage!
Call Trace: __in6_dev_get_safely include/net/addrconf.h:389 [inline] ip6_pkt_drop+0x596/0x610 net/ipv6/route.c:4620 ip6_pkt_discard+0x1c/0x30 net/ipv6/route.c:4651 xfrm_trans_reinject+0x324/0x630 net/xfrm/xfrm_input.c:806 process_one_work kernel/workqueue.c:3322 [inline] process_scheduled_works+0xa8e/0x14e0 kernel/workqueue.c:3405 worker_thread+0xa47/0xfb0 kernel/workqueue.c:3486
When commit 4f4920669d21 ("xfrm: Reinject transport-mode packets through workqueue") converted xfrm_trans_reinject from a tasklet to a workqueue, the reinjection loop ceased running in softirq context. Workqueue workers run in process context where local_bh_disable() does not enter an RCU read-side critical section under CONFIG_PREEMPT_RCU.
Because finish callbacks (such as ip6_rcv_finish) expect to run under an RCU read lock (performing route lookups, l3mdev lookups, and accessing RCU-protected data structures), invoking them in workqueue context without rcu_read_lock() triggers RCU lockdep warnings.
Furthermore, packets queued to the workqueue via xfrm_trans_queue_net() may carry non-refcounted (noref) dst entries (e.g. from ip_route_input_noref). Additionally, on netdevice unregistration, dst_dev_put() replaces dst->dev with blackhole_netdev, so dst entries do not keep skb->dev alive while queued in the workqueue.
Fix these issues by:
- Calling skb_dst_force(skb) in xfrm_trans_queue_net() while still in the
caller's RCU section to ensure dst is reference-counted before queuing.
- Holding a reference on skb->dev via dev_hold()/dev_put() across workqueue
deferral so skb->dev remains valid during finish() callback processing.
- Acquiring rcu_read_lock() around the finish callback invocation loop in
xfrm_trans_reinject().
Executive ViewAI
A memory-safety defect in the Linux kernel's IPsec/xfrm packet-reinjection path can crash or corrupt the kernel, causing unplanned outages and reboots on affected hosts. The impact is availability-only and requires an authenticated local user with low privileges plus a specific network device condition, so multi-tenant, containerized, and shared Linux environments carry the greatest risk. No public exploit code has been identified and successful exploitation demands significant timing precision, but a vendor fix is available and should be scheduled promptly.
Apply vendor patch. Until the update is deployed, restrict local shell and container access on shared hosts to trusted users, monitor for unexpected kernel panics or unplanned reboots, and avoid unnecessary network device registration/unregistration on high-value systems.
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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
EUVD-2026-93354
GHSA-j7rh-wqhv-hc9p
NVD
CVE.org
EPSS
VulDB
Exploit-DB