Skip to main content

Linux Kernel CVE-2026-68170

| EUVDEUVD-2026-55556 CRITICAL
2026-08-10 Linux GHSA-385r-j2f8-hqw6
Critical
Disputed · 9.8 Vendor: Linux
Share

Severity by source

Sources disagree (Medium–Critical)
Vendor (Linux) PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.0 HIGH

Network-triggerable via MPTCP RX so AV:N/PR:N, but a timing-dependent race gives AC:H; demonstrated impact is a UAF kernel crash (A:H) with only speculative C/I leakage (L).

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

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

CVSS VectorVendor: Linux

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

Lifecycle Timeline

5
Analysis Generated
Aug 14, 2026 - 02:01 vuln.today
CVSS changed
Aug 13, 2026 - 23:37 NVD
9.8 (CRITICAL)
Patch available
Aug 10, 2026 - 14:18 EUVD
CVE Published
Aug 10, 2026 - 11:59 cve.org
UNKNOWN (no severity yet)
CVE Published
Aug 10, 2026 - 11:59 cve.org
CRITICAL 9.8

DescriptionCVE.org

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

mptcp: fix stale skb->sk reference on subflow close

The backlog list is updated by mptcp_data_ready() under mptcp_data_lock(). The cleanup of backlog references to a closing subflow, however, was performed in mptcp_close_ssk(), before __mptcp_close_ssk() acquires the ssk lock, and while holding neither the ssk lock nor mptcp_data_lock().

Because that traversal ran without mptcp_data_lock(), concurrent softirq RX processing on another CPU (subflow_data_ready() -> mptcp_data_ready() -> __mptcp_add_backlog(), under mptcp_data_lock()) could add a backlog entry referencing the ssk while the cleanup loop was in progress. Such an entry could be missed by the cleanup, or the concurrent list update could corrupt the traversal, leaving skb->sk pointing at the ssk after it is freed.

A later mptcp_backlog_purge() then dereferences the stale pointer, triggering a warning in inet_sock_destruct() (ssk->sk_rmem_alloc != 0) followed by a use-after-free in mptcp_backlog_purge().

Fix this by moving the backlog cleanup into __mptcp_close_ssk(), after subflow->closing is set to 1 and while the ssk lock is still held, serialized under mptcp_data_lock(). The cleanup runs only on the push path (MPTCP_CF_PUSH), where backlog references accumulate; on other teardown paths the caller already handles cleanup.

With subflow->closing set and mptcp_data_lock() held across the purge, any concurrent mptcp_data_ready() either completes its enqueue before the purge runs and is caught, or observes closing=1 and bails out. Once mptcp_data_unlock() is reached, no new skb referencing the ssk can be enqueued, so the cleanup is exhaustive.

Remove the unprotected traversal from mptcp_close_ssk() entirely.

AnalysisAI

Use-after-free in the Linux kernel's MPTCP (Multipath TCP) subflow teardown path allows a stale skb->sk pointer to survive after a subflow socket is freed, leading to a kernel warning in inet_sock_destruct() and a use-after-free in mptcp_backlog_purge(). The flaw affects Linux 6.19 and is fixed in 7.1.6 and 7.2-rc5; it is a race condition between subflow close and concurrent softirq RX backlog processing. There is no public exploit identified at time of analysis, and EPSS estimates exploitation probability at just 0.19% (9th percentile).

Technical ContextAI

The bug lives in the kernel's MPTCP implementation, which lets a single logical TCP connection span multiple subflows. Incoming data is queued via mptcp_data_ready() -> __mptcp_add_backlog() under mptcp_data_lock(). The original code cleaned up backlog references to a closing subflow inside mptcp_close_ssk() while holding neither the subflow (ssk) lock nor mptcp_data_lock(). Because that traversal ran unlocked, softirq RX on another CPU could add a backlog entry referencing the ssk mid-cleanup, so the entry was missed or the list traversal was corrupted, leaving skb->sk pointing at freed memory. This is a classic concurrency-driven use-after-free (root-cause class CWE-416, though the feed reports CWE as N/A). The fix moves the purge into __mptcp_close_ssk() after subflow->closing=1 is set and under mptcp_data_lock(), making cleanup exhaustive. Note the CPE data is generic (cpe:2.3:a:linux:linux:*) and does not pin exact kernel versions; rely on the EUVD version list instead.

RemediationAI

Vendor-released patch: upgrade to Linux 7.1.6 (stable) or 7.2-rc5, or apply the upstream stable commits 625fc6060864889fe3d370cdeffbbab762af3cb4 and bd7aae448f6ee9d82599a4474664de1e6e91a535 from git.kernel.org; distribution users should pull the corresponding backported kernel package. Where immediate patching is not possible and MPTCP is not required, disable it as a compensating control by setting sysctl net.mptcp.enabled=0, which removes the vulnerable code path entirely - the side effect is loss of multipath connectivity, so this is unsuitable for workloads (e.g. mobile/redundant-link gateways) that depend on MPTCP. If MPTCP must stay enabled, restrict exposure of MPTCP-listening services to trusted networks to reduce the frequency of subflow churn that drives the race. Track the vendor advisory via https://nvd.nist.gov/vuln/detail/CVE-2026-68170.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-68170 vulnerability details – vuln.today

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