CVE Catalog

CVE-2026-23307

MediumCVSS 5.5
Published: Updated: Translated: NVD NIST

Summary

In the Linux kernel, the ems_usb_read_bulk_callback() function in the CAN ems_usb driver has a message length checking issue. When looking at the data in a USB urb, actual_length is the size of the buffer passed to the driver, not the transfer_buffer_length set by the driver as the max size of the buffer. When parsing messages in ems_usb_read_bulk_callback(), properly check the size both at the beginning of parsing the message to ensure it is big enough for the expected structure, and at the end of the message to ensure we don't overflow past the end of the buffer for the next message.

Risk Assessment

An attacker could exploit this to cause a buffer overflow or out-of-bounds access, potentially leading to a system crash or arbitrary code execution in the kernel context. The risk affects systems using the CAN ems_usb driver.

Recommendation

Update the Linux kernel to a version containing the fix. If updating is not possible, consider disabling or restricting the use of the ems_usb driver.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: can: ems_usb: ems_usb_read_bulk_callback(): check the proper length of a message When looking at the data in a USB urb, the actual_length is the size of the buffer passed to the driver, not the transfer_buffer_length which is set by the driver as the max size of the buffer. When parsing the messages in ems_usb_read_bulk_callback() properly check the size both at the beginning of parsing the message to make sure it is big enough for the expected structure, and at the end of the message to make sure we don't overflow past the end of the buffer for the next message.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS