Cloudanix VulnDB

CVE-2026-23031

None

CVSS

—

EPSS

0.2%

Published

Jan 31, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

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

  1. Obtain local access or execute code on a system with the vulnerable gs_usb driver loaded
  2. Open the CAN USB device to allocate and submit anchored in-URBs
  3. Allow or force completion of the URBs so the USB core unanchors them
  4. Close the device; the leaked URBs remain allocated
  5. 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