Skip to main content

Linux Kernel EUVDEUVD-2026-45691

| CVE-2026-63918 HIGH
2026-07-19 Linux GHSA-9qwr-gw6x-fmgj
7.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

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

Local race condition winnable mainly on PREEMPT_RT gives AC:H; driving L2TP sessions needs privileged netlink access so PR:L; kernel UAF yields high C/I/A.

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
SUSE
HIGH
qualitative
Red Hat
7.0 MEDIUM
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

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
Jul 20, 2026 - 16:18 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
7.8 (HIGH)
Patch available
Jul 19, 2026 - 17:19 EUVD
CVE Published
Jul 19, 2026 - 14:55 cve.org
HIGH 7.8
CVE Published
Jul 19, 2026 - 14:55 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

l2tp: use refcount_inc_not_zero in l2tp_session_get_by_ifname

A reader in l2tp_session_get_by_ifname() can return a pointer to a session whose refcount has reached zero. The getter takes its reference with plain refcount_inc(), but every other session getter in the same file (l2tp_v2_session_get, l2tp_v3_session_get, and the corresponding _get_next variants) uses refcount_inc_not_zero() because the IDR/RCU lookup can race with refcount_dec_and_test() -> l2tp_session_free() -> kfree_rcu(). The ifname getter is the only outlier; the inconsistency was raised on-list after 979c017803c4 ("l2tp: use list_del_rcu in l2tp_session_unhash").

A reader inside rcu_read_lock_bh() that matches session->ifname can be preempted between the strcmp() and the refcount_inc(). If the last reference drops on another CPU in that window, the reader's refcount_inc() runs on a counter that has reached zero. refcount_t catches the addition-on-zero, prints "refcount_t: addition on 0; use-after-free", saturates the counter, and returns the saturated pointer to the caller. Session memory is held live by the in-flight RCU read section, but the kfree_rcu() callback queued from l2tp_session_free() will free it once the grace period closes; a caller that dereferences the returned session past that point hits a slab-use-after-free. On PREEMPT_RT local_bh_disable() is a per-CPU sleeping lock and the preemption window is real; on stock PREEMPT kernels local_bh_disable() is a preempt_count increment that closes the cross-CPU race in practice (see below).

Use refcount_inc_not_zero() and continue the list walk on failure, matching the other session getters in the file. The ifname getter is the only session getter in net/l2tp/ that still uses the bare refcount_inc() pattern; this change restores file-internal consistency. The success path is unchanged.

AnalysisAI

Local privilege-boundary memory corruption in the Linux kernel L2TP subsystem (net/l2tp) arises because l2tp_session_get_by_ifname() took its reference with a bare refcount_inc() instead of refcount_inc_not_zero(), letting an RCU reader acquire a session whose refcount already hit zero and dereference freed slab memory. Affected kernels include the 6.12.x and 6.18.x stable series (fixed in 6.12.93, 6.18.35, 7.0.12 and 7.1), and the flaw is a race between the IDR/RCU lookup and l2tp_session_free()->kfree_rcu() that is genuinely reachable on PREEMPT_RT builds. There is no public exploit identified at time of analysis and EPSS is low (0.20%), consistent with a hard-to-win local race rather than a widely weaponized bug.

Technical ContextAI

The defect lives in the L2TP (Layer 2 Tunneling Protocol) code in net/l2tp/, which manages tunnel and session objects looked up via IDR under RCU. Sessions are reference-counted with refcount_t and freed through refcount_dec_and_test() -> l2tp_session_free() -> kfree_rcu(). The root cause is a use-after-free class flaw (CWE-416, though the feed lists CWE as N/A): the ifname getter matched session->ifname under rcu_read_lock_bh() and then incremented the refcount without checking for zero, unlike the sibling getters l2tp_v2_session_get, l2tp_v3_session_get and their _get_next variants which already use refcount_inc_not_zero(). Because a reader can be preempted between the strcmp() and the refcount_inc(), and because refcount_t treats addition-on-zero as an error (it prints 'refcount_t: addition on 0; use-after-free' and saturates the counter), the caller receives a saturated pointer to memory that the pending RCU grace period will free. The two CPE entries only identify the vendor/product generically as cpe:2.3:a:linux:linux:*, so exact affected builds must be taken from the stable-tree commit ranges rather than CPE.

RemediationAI

Vendor-released patch: upgrade to a fixed stable kernel - 6.12.93 for the 6.12 series, 6.18.35 for the 6.18 series, or 7.0.12/7.1 for newer trees - or apply the upstream stable commits (ee80455f, 947013fd, 782d60a6, 05f95729) available at git.kernel.org, which replace the bare refcount_inc() in l2tp_session_get_by_ifname() with refcount_inc_not_zero() and continue the list walk on failure. Where immediate patching is not possible, the most effective compensating controls are to prevent creation and enumeration of L2TP sessions by unprivileged contexts: unload or blacklist the l2tp_core / l2tp modules if L2TP is not used (side effect: breaks any L2TP VPN/tunnel functionality), and restrict CAP_NET_ADMIN and L2TP netlink access so untrusted local users and containers cannot drive session churn (side effect: may impact network-management tooling). PREEMPT_RT deployments should prioritize the patch since the race window is real there, whereas stock PREEMPT kernels are largely protected by local_bh_disable() semantics in practice.

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-45691 vulnerability details – vuln.today

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