CVE-2026-31730
High · 7.8CVSS
7.8
EPSS
0.1%
Published
May 1, 2026
CISA due date
—
Cloudanix analysis
A local user or app on some Linux systems could trigger a kernel memory error that may crash the device or potentially gain higher privileges.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This is a local Linux kernel memory-corruption flaw in the Qualcomm FastRPC driver. When fastrpc_init_create_static_process() handles an error during the INIT_CREATE_STATIC ioctl path, it can free cctx->remote_heap without clearing the pointer. If the associated rpmsg device is later removed or unbound, fastrpc_rpmsg_remove() may free the same pointer again. A double-free in kernel memory can cause a kernel crash and, depending on allocator state, may be exploitable for local privilege escalation or arbitrary kernel memory manipulation. The CVSS vector indicates local access with low attack complexity, required low privileges, no user interaction, and potential high confidentiality, integrity, and availability impact.
Why it matters to the business
Systems that expose the FastRPC device interface to local users or applications may be at risk of kernel crashes or possible local privilege escalation. Operationally, exploitation could disrupt Linux-based endpoints, embedded devices, mobile/edge platforms, or appliances using Qualcomm FastRPC/rpmsg functionality. The issue is not currently listed in CISA KEV, is not known to be used in ransomware, has no reported mature public exploit, and has a very low EPSS score with no 30-day upward trend, so broad internet-scale exploitation is unlikely; however, the business risk remains meaningful on multi-user systems or devices where untrusted applications can access FastRPC device nodes.
How an attack unfolds
An attacker first needs local code execution with sufficient permissions to open the FastRPC device interface. They then trigger the INIT_CREATE_STATIC ioctl in a way that reaches the vulnerable error path, causing the driver to free cctx->remote_heap while leaving a stale non-NULL pointer behind. The attacker must then cause or wait for the related rpmsg device to be removed, unbound, reset, or otherwise cleaned up. During that cleanup, fastrpc_rpmsg_remove() sees the stale pointer and frees it again. In the simplest case this produces a kernel oops, panic, or denial of service. With careful heap shaping and reliable control of allocator behavior, a skilled attacker may attempt to convert the double-free into privilege escalation or kernel memory corruption.
How to fix it
Apply a Linux kernel update from the relevant distribution, device vendor, or kernel maintainer that includes the FastRPC fix clearing cctx->remote_heap after it is freed in the error path. No exact fixed package versions were provided, so track vendor advisories and stable-kernel backports for CVE-2026-31730 or the FastRPC double-free fix. Where immediate patching is not possible, reduce exposure by disabling or removing the Qualcomm FastRPC driver if it is not required, building kernels without CONFIG_QCOM_FASTRPC where feasible, blocking module loading where applicable, and restricting permissions on /dev/fastrpc* device nodes so only trusted system services can access them. On systems where rpmsg/FastRPC is required, avoid allowing untrusted local users, containers, or applications direct access to the device interface.
How to confirm the fix worked
Confirm the running kernel is a vendor-fixed build or contains the source change that nulls cctx->remote_heap after it is freed in the fastrpc_init_create_static_process() err_map path. Validate that package management, kernel release notes, or vendor advisories identify the FastRPC double-free fix as included. On source-based builds, inspect the FastRPC driver code to ensure the freed remote_heap pointer is cleared before later cleanup paths can run. Confirm runtime exposure by checking whether the FastRPC driver is loaded, whether CONFIG_QCOM_FASTRPC is enabled, and whether /dev/fastrpc* nodes exist. Review udev rules and file permissions to ensure only trusted principals can access FastRPC devices. In test environments only, use kernel sanitizers such as KASAN or KFENCE to verify that exercising FastRPC error paths and rpmsg removal no longer produces double-free warnings or kernel oops messages.
Typical attack path
- Gain local execution on a Linux system that includes the Qualcomm FastRPC kernel driver and exposes FastRPC device nodes.
- Verify access to a FastRPC character device, such as a /dev/fastrpc* interface, with permissions usable by the attacker-controlled process.
- Invoke the INIT_CREATE_STATIC ioctl with parameters or state that force fastrpc_init_create_static_process() down the vulnerable err_map cleanup path.
- Cause cctx->remote_heap to be freed while the pointer remains uncleared.
- Trigger, induce, or wait for rpmsg device removal, unbind, reset, or driver cleanup.
- Cause fastrpc_rpmsg_remove() to free the stale cctx->remote_heap pointer a second time.
- Leverage the resulting double-free for a kernel crash, denial of service, or potentially local privilege escalation if heap exploitation is reliable.
How to detect it
Look for signs of local interaction with FastRPC immediately before kernel instability. Relevant sources include kernel logs, system journal, auditd records for device-node access, udev logs, crash dumps, kdump/vmcore analysis, EDR process telemetry, and container runtime logs where device passthrough is used. Search for kernel oops, panic, slab allocator corruption, KASAN/KFENCE double-free reports, and FastRPC or rpmsg removal/unbind events. Correlate those events with processes opening /dev/fastrpc* or issuing ioctls to FastRPC devices shortly before the crash. On systems with auditd, monitor open/openat/ioctl activity against /dev/fastrpc* by non-system users. There are no known public threat actors, ransomware campaigns, or stable exploit indicators associated with this vulnerability, so detection should focus on behavioral artifacts: suspicious local access to FastRPC devices, repeated device unbind/reset activity, and kernel memory-corruption crashes mentioning fastrpc, rpmsg, remote_heap, or double-free.
- /dev/fastrpc
- /dev/fastrpc-adsp
- /dev/fastrpc-cdsp
- /dev/fastrpc-mdsp
- /dev/fastrpc-sdsp
- fastrpc
- qcom_fastrpc
- INIT_CREATE_STATIC
- fastrpc_init_create_static_process
- fastrpc_rpmsg_remove
- remote_heap
- KASAN: double-free
- KFENCE: memory corruption
- BUG: KASAN
- kernel BUG at
- slab-use-after-free
- double free
- rpmsg_remove
- unbind
What your security team should do
- Prioritize patching Linux systems, embedded devices, and appliances that expose Qualcomm FastRPC functionality to local users or third-party applications.
- Inventory systems for loaded FastRPC/rpmsg components and /dev/fastrpc* device nodes, especially on Qualcomm-based platforms.
- Restrict access to FastRPC device nodes to trusted system services until patched.
- Disable or remove the FastRPC driver on systems that do not require DSP/RPC functionality.
- Monitor kernel logs for FastRPC-related crashes, KASAN reports, allocator corruption, rpmsg unbind events, or unexpected reboots.
- Treat exploitation attempts as local post-compromise activity; investigate the source process and user account that accessed FastRPC immediately before any kernel crash.
- Because EPSS is low, KEV is false, and no mature exploit is reported, schedule remediation based on local exposure rather than internet-facing emergency response, but do not defer on multi-tenant or untrusted-application platforms.
The record
In the Linux kernel, the following vulnerability has been resolved: misc: fastrpc: possible double-free of cctx->remote_heap fastrpc_init_create_static_process() may free cctx->remote_heap on the err_map path but does not clear the pointer. Later, fastrpc_rpmsg_remove() frees cctx->remote_heap again if it is non-NULL, which can lead to a double-free if the INIT_CREATE_STATIC ioctl hits the error path and the rpmsg device is subsequently removed/unbound. Clear cctx->remote_heap after freeing it in the error path to prevent the later cleanup from freeing it again. This issue was found by an in-house analysis workflow that extracts AST-based information and runs static checks, with LLM assistance for triage, and was confirmed by manual code review. No hardware testing was performed.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-119338 Tesseract is an open source OCR engine. CWE-415
- CVE-2026-119116 A use-after-free and double-free issue in the SetClient command handler of the… CWE-415
- CVE-2026-85890 Double free in Microsoft Edge (Chromium-based) allows an unauthorized attacker to execute… CWE-415
- CVE-2026-83831 Double free in Microsoft Edge (Chromium-based) allows an unauthorized attacker to execute… CWE-415
- CVE-2026-88812 A double free in XKB SetGeometryin X.Org X Server before 21.1.25 and X Wayland before… CWE-415
- CVE-2026-116743 libyal libmsiecf through 20260525 contains a double free vulnerability in… CWE-415
- CVE-2026-112457 A double free issue was addressed with improved memory management. CWE-415
- CVE-2026-78116 The Broadcom AFBR-S50 time-of-flight sensor driver double-completes an RTIO submission… CWE-415