CVE-2024-41035

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

MEDIUM
5.5
CVSS Score
Published: July 29, 2024 at 02:31 PM UTC
Updated: June 17, 2026 at 07:47 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.3%
SSVC
No known exploit

Description

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.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v ≥ 3.10.106v ≥ 3.12.70v ≥ 3.16.42v ≥ 3.2.87v ≥ 4.1.39v ≥ 4.4.42v ≥ 4.9.33.10.106 ≤ v < 3.113.12.70 ≤ v < 3.133.16.42 ≤ v < 3.173.2.87 ≤ v < 3.34.1.39 ≤ v < 4.24.10 ≤ v < 4.19.3184.10 ≤ v < 5.10.2224.10 ≤ v < 5.15.1634.10 ≤ v < 5.4.2804.10 ≤ v < 6.1.1004.10 ≤ v < 6.104.10 ≤ v < 6.6.414.10 ≤ v < 6.9.104.10.1 ≤ v < 4.19.3184.20 ≤ v < 5.4.2804.4.42 ≤ v < 4.54.9.3 ≤ v < 4.105.11 ≤ v < 5.15.1635.16 ≤ v < 6.1.1005.5 ≤ v < 5.10.2226.2 ≤ v < 6.6.416.7 ≤ v < 6.9.100a8fd1346254974c3a852338508e4a4cddbb35f115668b4354b38b41b316571deed2763d631b2977264024a2676ba7d91fe7b1713b2c32d1b0b508cb3.10.1063.12.703.16.423.2.874.1.394.104.10 rc34.10 rc44.10 rc54.10 rc64.10 rc74.10 rc84.4.424.9.35b0f2fc3c2f9efda47439557e0d51faca7e43ed6.10 rc16.10 rc26.10 rc36.10 rc46.10 rc56.10 rc66.10 rc77cc00abef071a8a7d0f4457b7afa2f57f683d83f8597a9245181656ae2ef341906e5f40af323fbcab0de742a1be16b76b534d088682f18cf57f012d2c3726b442527ab31c7110d0445411f5b5343db01
Vendor states this is fixed in 2bd8534a1b83c65702aec3cab164170f8e584188 (fixed)
Vendor states this is fixed in 37514a5c1251a8c5c95c323f55050736e7069ac7 (fixed)
Vendor states this is fixed in 60abea505b726b38232a0ef410d2bd1994a77f78 (fixed)
Vendor states this is fixed in 647d61aef106dbed9c70447bcddbd4968e67ca64 (fixed)
Vendor states this is fixed in 9edcf317620d7c6a8354911b69b874cf89716646 (fixed)
Vendor states this is fixed in a368ecde8a5055b627749b09c6218ef793043e47 (fixed)
Vendor states this is fixed in d09dd21bb5215d583ca9a1cb1464dbc77a7e88cf (fixed)
Vendor states this is fixed in d8418fd083d1b90a6c007cf8dcf81aeae274727b (fixed)
Affected range stops below 3.11, so it looks safe — our inference, not a vendor statement
Affected range stops below 3.13, so it looks safe — our inference, not a vendor statement
Affected range stops below 3.17, so it looks safe — our inference, not a vendor statement
Affected range stops below 3.3, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 4.10 (unaffected)
Vendor states this is fixed in 4.19.318 (unaffected)
Affected range stops below 4.2, so it looks safe — our inference, not a vendor statement
Affected range stops below 4.5, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 5.10.222 (unaffected)
Vendor states this is fixed in 5.15.163 (unaffected)
Vendor states this is fixed in 5.4.280 (unaffected)
Vendor states this is fixed in 6.1.100 (unaffected)
Vendor states this is fixed in 6.10 (unaffected)
Vendor states this is fixed in 6.6.41 (unaffected)
Vendor states this is fixed in 6.9.10 (unaffected)

References (9)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/2bd8534a1b83c65702aec3cab164170f8e584188
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/37514a5c1251a8c5c95c323f55050736e7069ac7
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/60abea505b726b38232a0ef410d2bd1994a77f78
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/647d61aef106dbed9c70447bcddbd4968e67ca64
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/9edcf317620d7c6a8354911b69b874cf89716646
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/a368ecde8a5055b627749b09c6218ef793043e47
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/d09dd21bb5215d583ca9a1cb1464dbc77a7e88cf
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/d8418fd083d1b90a6c007cf8dcf81aeae274727b

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
NVD-CWE-noinfo

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card