CVE-2026-23031
NoneCVSS
—
EPSS
0.2%
Published
Jan 31, 2026
CISA due date
—
Cloudanix analysis
A bug in the Linux kernel's handling of certain USB devices can slowly use up memory that never gets released, eventually slowing down or crashing the computer.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Theoretical
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Other
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Low
What it actually does
Memory leak in the gs_usb USB CAN driver where completed in-URBs are unanchored by the USB framework before the completion callback runs, so they are never released by usb_kill_anchored_urbs on device close.
Why it matters to the business
Long-running systems using the affected USB CAN hardware gradually consume kernel memory, eventually causing performance degradation or denial of service; the issue affects virtualized Linux environments and stable kernel trees with moderate downstream reach.
How an attack unfolds
An attacker with local access repeatedly opens and closes the gs_usb device (or triggers the same sequence via normal driver usage), causing each completed URB to leak; over time the cumulative leaks exhaust memory without any remote vector or authentication bypass.
How to fix it
Upgrade linux-virt and linux-virt-doc packages to version 6.12.27-r0 or later; for custom kernels apply commit ec5ccc2af9e5b045671f3f604b57512feda8bcc5 and rebuild.
How to confirm the fix worked
Confirm the running kernel contains the fix by checking the presence of the re-anchoring call in gs_usb_receive_bulk_callback or by verifying package versions match the fixed releases; monitor memory usage of the gs_usb module over repeated open/close cycles.
Typical attack path
- Obtain local access or execute code on a system with the vulnerable gs_usb driver loaded
- Open the CAN USB device to allocate and submit anchored in-URBs
- Allow or force completion of the URBs so the USB core unanchors them
- Close the device; the leaked URBs remain allocated
- Repeat the cycle to accumulate memory pressure until the system is impacted
How to detect it
Examine kernel memory statistics and slabinfo for increasing allocations attributed to URB or gs_usb structures; correlate with audit or system logs showing repeated gs_can_open and gs_can_close activity on USB CAN devices; no public exploit artifacts exist.
What your security team should do
- Apply the listed kernel package upgrades immediately on all affected systems
- Prioritize systems that expose the gs_usb driver to untrusted local users or containers
- Add the fixed commit to any internal kernel build pipelines and re-test USB CAN functionality
- Review EPSS trend and re-assess in 30 days if new exploit code appears
The record
In the Linux kernel, the following vulnerability has been resolved: can: gs_usb: gs_usb_receive_bulk_callback(): fix URB memory leak In gs_can_open(), the URBs for USB-in transfers are allocated, added to the parent->rx_submitted anchor and submitted. In the complete callback gs_usb_receive_bulk_callback(), the URB is processed and resubmitted. In gs_can_close() the URBs are freed by calling usb_kill_anchored_urbs(parent->rx_submitted). However, this does not take into account that the USB framework unanchors the URB before the complete function is called. This means that once an in-URB has been completed, it is no longer anchored and is ultimately not released in gs_can_close(). Fix the memory leak by anchoring the URB in the gs_usb_receive_bulk_callback() to the parent->rx_submitted anchor.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Linux | Kernel | 3.16.0 | 6.1.162 |
| openSUSE:Leap 16.0 | dtb-aarch64 | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-64kb | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-azure | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-default | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-default-base | 0 | 6.12.0-160000.27.1.160000.2.8 |
| openSUSE:Leap 16.0 | kernel-docs | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-kvmsmall | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-obs-build | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-obs-qa | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-rt | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-source | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-syms | 0 | 6.12.0-160000.27.1 |
| openSUSE:Leap 16.0 | kernel-zfcpdump | 0 | 6.12.0-160000.27.1 |
Related vulnerabilities
- CVE-2026-23226 In the Linux kernel, the following vulnerability has been resolved: ksmbd: add chann_lock… Also affects Kernel
- CVE-2026-23225 In the Linux kernel, the following vulnerability has been resolved: sched/mmcid: Don't… Also affects Kernel
- CVE-2026-23230 In the Linux kernel, the following vulnerability has been resolved: smb: client: split… Also affects Kernel
- CVE-2026-23224 In the Linux kernel, the following vulnerability has been resolved: erofs: fix UAF issue… Also affects Kernel
- CVE-2026-23227 In the Linux kernel, the following vulnerability has been resolved: drm/exynos: vidi: use… Also affects Kernel
- CVE-2026-23223 In the Linux kernel, the following vulnerability has been resolved: xfs: fix UAF in… Also affects Kernel
- CVE-2026-23228 In the Linux kernel, the following vulnerability has been resolved: smb: server: fix leak… Also affects Kernel
- CVE-2026-23229 In the Linux kernel, the following vulnerability has been resolved: crypto: virtio - Add… Also affects Kernel