Skip to main content

Linux Kernel CVE-2026-52947

| EUVDEUVD-2026-38815 HIGH
Use After Free (CWE-416)
2026-06-24 Linux GHSA-49c8-7mpf-m266
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 AF_QIPCRTR access gives PR:L/AV:L; the defect is a narrow RCU timing race so AC:H; a kernel UAF yields high C/I/A within 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:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
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
Jun 28, 2026 - 08:31 vuln.today
CVSS changed
Jun 28, 2026 - 08:22 NVD
7.8 (HIGH)
Patch available
Jun 24, 2026 - 18:02 EUVD
CVE Published
Jun 24, 2026 - 16:26 cve.org
HIGH 7.8
CVE Published
Jun 24, 2026 - 16:26 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

net: qrtr: fix refcount saturation and potential UAF in qrtr_port_remove

In qrtr_port_remove(), the socket reference count is decremented via __sock_put() before the port is removed from the qrtr_ports XArray and before the RCU grace period elapses.

This breaks the fundamental RCU update paradigm. It exposes a race window where a concurrent RCU reader (such as qrtr_reset_ports() or qrtr_port_lookup()) can obtain a pointer to the socket from the XArray, and attempt to call sock_hold() on a socket whose reference count has already dropped to zero.

This exact race condition was hit during syzkaller fuzzing, leading to the following refcount saturation warning and a potential Use-After-Free:

refcount_t: saturated; leaking memory. WARNING: CPU: 3 PID: 1273 at lib/refcount.c:22 refcount_warn_saturate+0xae/0x1d0 Modules linked in: qrtr(+) bochs drm_shmem_helper ... Call Trace: <TASK> qrtr_reset_ports net/qrtr/af_qrtr.c:768 [inline] [qrtr] __qrtr_bind.isra.0+0x48b/0x570 net/qrtr/af_qrtr.c:805 [qrtr] qrtr_bind+0x17d/0x210 net/qrtr/af_qrtr.c:901 [qrtr] kernel_bind+0xe4/0x120 net/socket.c:3592 qrtr_ns_init+0x1a6/0x380 net/qrtr/ns.c:715 [qrtr] qrtr_proto_init+0x3b/0xff0 net/qrtr/af_qrtr.c:169 [qrtr] do_one_initcall+0xf5/0x5e0 init/main.c:1283 ... </TASK>

Fix this by deferring the reference count decrement until after the xa_erase() and the synchronize_rcu() complete.

(Note: The v1 of this patch incorrectly replaced __sock_put() with sock_put(). As Simon Horman pointed out, the callers of qrtr_port_remove() still hold a reference to the socket, so freeing the socket memory here would lead to a subsequent UAF in the caller. Thus, the __sock_put() is kept, but only repositioned to close the RCU race.)

AnalysisAI

Local privilege escalation and memory corruption is possible in the Linux kernel's QRTR (Qualcomm IPC Router) networking subsystem (net/qrtr/af_qrtr.c), where qrtr_port_remove() decrements a socket's reference count via __sock_put() before erasing the port from the qrtr_ports XArray and before the RCU grace period elapses, violating the RCU update ordering. A concurrent RCU reader (qrtr_reset_ports() or qrtr_port_lookup()) can retrieve the socket and call sock_hold() on an object whose refcount has already reached zero, producing refcount saturation and a use-after-free. The issue was reproduced by syzkaller fuzzing; it carries a CVSS of 7.8 (AV:L), EPSS is low at 0.18% (8th percentile), it is not on CISA KEV, and no public exploit identified at time of analysis.

Technical ContextAI

QRTR is the Linux implementation of the Qualcomm IPC Router protocol (AF_QIPCRTR address family), used for message passing between a host and on-SoC services (modem, DSP, etc.) primarily on Qualcomm-based platforms. The defect is an RCU lifetime/refcounting bug: the qrtr_ports XArray is read under RCU by lookup and reset paths, so an entry must only be made unreachable (xa_erase) and quiesced (synchronize_rcu) BEFORE its backing reference is dropped. By dropping the reference first, a window opens where a reader observes a still-published pointer to a socket whose count is zero. Although the input lists CWE as N/A, the root cause is CWE-416 (Use-After-Free) compounded by CWE-911 (improper reference count update) and an RCU-ordering race (CWE-362). The fix defers the __sock_put() until after xa_erase() and synchronize_rcu(); __sock_put() (not sock_put()) is retained deliberately because callers still hold their own reference, so freeing here would instead cause a UAF in the caller.

RemediationAI

Apply your distribution's kernel update that incorporates the fix; vendor-released patches correspond to upstream stable versions 5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.94, 6.18.36, 7.0.13 and 7.1 - upgrade to at or above the relevant version for your branch and reboot. The fix commits are available at git.kernel.org (e.g. https://git.kernel.org/stable/c/2aa4c12723fe432e623462a3be42a197a128722b); cross-reference the NVD advisory (https://nvd.nist.gov/vuln/detail/CVE-2026-52947) to confirm the exact backport for your kernel series. Where immediate patching is not possible, the most effective compensating control is to prevent the vulnerable code path from loading or being reachable: blacklist/unload the qrtr kernel module (e.g. via modprobe blacklist) on systems that do not require Qualcomm IPC Router - the trade-off is loss of QRTR-dependent functionality, which is irrelevant on most non-Qualcomm x86 servers but breaks modem/DSP communication on Qualcomm hardware. If the module must remain loaded, restrict the ability of untrusted local users to create AF_QIPCRTR sockets and tighten local access controls and untrusted-code execution, since exploitation requires local access; note this only reduces, not eliminates, exposure.

Vendor StatusVendor

SUSE

Severity: Moderate
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

CVE-2026-52947 vulnerability details – vuln.today

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