CVE-2023-53578 in Linuxinfo

Summary

by MITRE • 10/04/2025

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

net: qrtr: Fix an uninit variable access bug in qrtr_tx_resume()

Syzbot reported a bug as following:

===================================================== BUG: KMSAN: uninit-value in qrtr_tx_resume+0x185/0x1f0 net/qrtr/af_qrtr.c:230 qrtr_tx_resume+0x185/0x1f0 net/qrtr/af_qrtr.c:230 qrtr_endpoint_post+0xf85/0x11b0 net/qrtr/af_qrtr.c:519 qrtr_tun_write_iter+0x270/0x400 net/qrtr/tun.c:108 call_write_iter include/linux/fs.h:2189 [inline]
aio_write+0x63a/0x950 fs/aio.c:1600 io_submit_one+0x1d1c/0x3bf0 fs/aio.c:2019 __do_sys_io_submit fs/aio.c:2078 [inline]
__se_sys_io_submit+0x293/0x770 fs/aio.c:2048 __x64_sys_io_submit+0x92/0xd0 fs/aio.c:2048 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd

Uninit was created at: slab_post_alloc_hook mm/slab.h:766 [inline]
slab_alloc_node mm/slub.c:3452 [inline]
__kmem_cache_alloc_node+0x71f/0xce0 mm/slub.c:3491 __do_kmalloc_node mm/slab_common.c:967 [inline]
__kmalloc_node_track_caller+0x114/0x3b0 mm/slab_common.c:988 kmalloc_reserve net/core/skbuff.c:492 [inline]
__alloc_skb+0x3af/0x8f0 net/core/skbuff.c:565 __netdev_alloc_skb+0x120/0x7d0 net/core/skbuff.c:630 qrtr_endpoint_post+0xbd/0x11b0 net/qrtr/af_qrtr.c:446 qrtr_tun_write_iter+0x270/0x400 net/qrtr/tun.c:108 call_write_iter include/linux/fs.h:2189 [inline]
aio_write+0x63a/0x950 fs/aio.c:1600 io_submit_one+0x1d1c/0x3bf0 fs/aio.c:2019 __do_sys_io_submit fs/aio.c:2078 [inline]
__se_sys_io_submit+0x293/0x770 fs/aio.c:2048 __x64_sys_io_submit+0x92/0xd0 fs/aio.c:2048 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd

It is because that skb->len requires at least sizeof(struct qrtr_ctrl_pkt) in qrtr_tx_resume(). And skb->len equals to size in qrtr_endpoint_post(). But size is less than sizeof(struct qrtr_ctrl_pkt) when qrtr_cb->type equals to QRTR_TYPE_RESUME_TX in qrtr_endpoint_post() under the syzbot scenario. This triggers the uninit variable access bug.

Add size check when qrtr_cb->type equals to QRTR_TYPE_RESUME_TX in qrtr_endpoint_post() to fix the bug.

Be aware that VulDB is the high quality source for vulnerability data.

Analysis

by VulDB Data Team • 03/02/2026

The vulnerability CVE-2023-53578 resides within the Linux kernel's QRTR (Qualcomm Remote Processor) networking subsystem, specifically in the `qrtr_tx_resume()` function located in `net/qrtr/af_qrtr.c`. This issue represents a classic uninitialized variable access flaw that can lead to unpredictable behavior and potential security implications within the kernel's networking stack. The bug was identified through automated fuzzing by Syzbot, which detected a KMSAN (Kernel Memory Sanitizer) error indicating an uninitialized value being accessed during the transmission resume process. The vulnerability manifests when processing QRTR control packets, particularly those of type QRTR_TYPE_RESUME_TX, where the function attempts to access fields within a socket buffer without proper initialization checks.

The technical flaw occurs in the interaction between the QRTR endpoint posting mechanism and the transmission resume functionality. During normal operation, the `qrtr_endpoint_post()` function allocates socket buffers and initializes packet data, but under specific conditions involving QRTR_TYPE_RESUME_TX packets, the allocated buffer size (`size`) becomes smaller than the required `sizeof(struct qrtr_ctrl_pkt)`. This discrepancy causes `skb->len` to be insufficient for the subsequent `qrtr_tx_resume()` function call, which expects a properly initialized control packet structure. The uninitialized memory access happens at line 230 in `af_qrtr.c`, where the function attempts to read from memory that was allocated but not properly initialized with complete control packet data. This scenario creates a memory access violation that can potentially lead to information disclosure or system instability.

The operational impact of this vulnerability extends beyond simple memory corruption, as it affects the core networking functionality of systems utilizing QRTR protocols, particularly those involving Qualcomm-based processors and remote processor communication. The vulnerability can be triggered through asynchronous I/O operations involving the `io_submit` system call, which when combined with QRTR TUN interface writes, can cause kernel memory corruption. This type of flaw falls under CWE-457: Use of Uninitialized Variable, which is categorized as a critical security weakness in the CWE taxonomy. The ATT&CK framework would classify this vulnerability under T1059.006: System Scripting and T1566.001: Phishing, as it could be exploited through kernel-level attacks that might lead to privilege escalation or system compromise, though the direct attack surface requires specific conditions involving QRTR protocol usage.

The fix implemented addresses the root cause by adding a size validation check in the `qrtr_endpoint_post()` function when handling QRTR_TYPE_RESUME_TX packets. This mitigation ensures that the allocated socket buffer has sufficient space to accommodate the control packet structure before proceeding with transmission resume operations. The patch prevents the uninitialized variable access by validating that `size` meets the minimum requirements for `struct qrtr_ctrl_pkt` before allowing the packet processing to continue. This approach aligns with secure coding practices recommended in the Linux kernel security guidelines and helps maintain the integrity of the QRTR subsystem. The fix demonstrates the importance of proper input validation and memory allocation checks in kernel space, where uninitialized memory access can have severe consequences for system stability and security.

Responsible

Linux

Reservation

10/04/2025

Disclosure

10/04/2025

Moderation

accepted

CPE

ready

EPSS

0.00139

KEV

no

Activities

very low

Sources

Do you know our Splunk app?

Download it now for free!