Linux: usb: gadget: f_uac1_legacy: validate bRequest index in generic_{set,get}_cmd
What fixes it
- 36f3f009049bc91e14dc856007932473318d12f8LinuxCVE List
- 8c611876c002d712ae5f246af5188432c708f79dLinuxCVE List
- 697cfe6e53b66cda196d6f8833b0ee97fefd0a8aLinuxCVE List
- 9062d50e75c24dc7911be05c9b1719b3b256af15LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
usb: gadget: f_uac1_legacy: validate bRequest index in generic_{set,get}_cmd
generic_set_cmd() and generic_get_cmd() use the low nibble of ctrl->bRequest as an index into con->data[]:
u8 cmd = (ctrl->bRequest & 0x0F); /* 0 .. 15 */ ... con->data[cmd] = value; /* OOB when cmd >= 5 */
struct usb_audio_control (include/linux/usb/audio.h) declares data as a 5-element array, so indices 5 through 15 write (or read) up to 44 bytes past the end of the array on the heap.
A malicious USB host can craft a class-specific SET_CUR / GET_CUR request with an arbitrary bRequest value, triggering the out-of-bounds access from an IRQ completion handler with no further preconditions.
Add an ARRAY_SIZE() guard to both functions.
Text from CVE List
Affected versions 12
- Linuxaffected: c47d7b09891abb4f8b222317c89c7469bed8db3a before da841c1511a6160b8bc6bb7b7c6d4c9fb76fb51eCVE List
- Linuxaffected: c47d7b09891abb4f8b222317c89c7469bed8db3a before 36f3f009049bc91e14dc856007932473318d12f8CVE List
- Linuxaffected: c47d7b09891abb4f8b222317c89c7469bed8db3a before 8c611876c002d712ae5f246af5188432c708f79dCVE List
- Linuxaffected: c47d7b09891abb4f8b222317c89c7469bed8db3a before 697cfe6e53b66cda196d6f8833b0ee97fefd0a8aCVE List
- Linuxaffected: c47d7b09891abb4f8b222317c89c7469bed8db3a before 9062d50e75c24dc7911be05c9b1719b3b256af15CVE List
- Linuxaffected: 2.6.31CVE List
- Linuxunaffected: all versions before 2.6.31CVE List
- Linuxunaffected: 6.6.160 through 6.6.*CVE List
- Linuxunaffected: 6.12.113 through 6.12.*CVE List
- Linuxunaffected: 6.18.56 through 6.18.*CVE List
- Linuxunaffected: 7.2.10 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 5
- git.kernel.org/stable/c/da841c1511a6160b8bc6bb7b7c6d4c9fb76fb51eReferencevia CVE List
- git.kernel.org/stable/c/36f3f009049bc91e14dc856007932473318d12f8Referencevia CVE List
- git.kernel.org/stable/c/8c611876c002d712ae5f246af5188432c708f79dReferencevia CVE List
- git.kernel.org/stable/c/697cfe6e53b66cda196d6f8833b0ee97fefd0a8aReferencevia CVE List
- git.kernel.org/stable/c/9062d50e75c24dc7911be05c9b1719b3b256af15Referencevia CVE List