CVE-2024-41035

USB: core: Fix duplicate endpoint bug by clearing reserved bits in the descriptor

published July 29, 2024

CVSS
—
EPSS
0%
Percentile
21.4
In the wild
Unconfirmed
What it is

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

USB: core: Fix duplicate endpoint bug by clearing reserved bits in the descriptor

Syzbot has identified a bug in usbcore (see the Closes: tag below)

caused by our assumption that the reserved bits in an endpoint

descriptor's bEndpointAddress field will always be 0. As a result of

the bug, the endpoint_is_duplicate() routine in config.c (and possibly

other routines as well) may believe that two descriptors are for

distinct endpoints, even though they have the same direction and

endpoint number. This can lead to confusion, including the bug

identified by syzbot (two descriptors with matching endpoint numbers

and directions, where one was interrupt and the other was bulk).

To fix the bug, we will clear the reserved bits in bEndpointAddress

when we parse the descriptor. (Note that both the USB-2.0 and USB-3.1

specs say these bits are "Reserved, reset to zero".) This requires us

to make a copy of the descriptor earlier in usb_parse_endpoint() and

use the copy instead of the original when checking for duplicates.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00299 · 21.4th percentile
Published
2024-07-29T14:31Z
EPSS history
Timeline
  • 29 JUL 14:31Z
    USB: core: Fix duplicate endpoint bug by clearing reserved bits in the descriptor
    cvelistv5