Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: usb: gadget: uvc: clamp SEND_RESPONSE length to the response buffer uvc_send_response() builds the UVC control response from a user-supplied struct uvc_request_data: req->length = min_t(unsigned int, uvc->event_length, data->length); ... memcpy(req->buf, data->data, req->length); req->length is clamped to uvc->event_length, which is taken from the host control request wLength (up to UVC_MAX_REQUEST_SIZE, 64), and to data->length, which comes from the UVCIOC_SEND_RESPONSE ioctl and is only checked for being negative. The source buffer data->data is only 60 bytes, so a response with uvc->event_length and data->length both greater than 60 makes memcpy() read past the end of data->data. Clamp req->length to sizeof(data->data) as well.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected a5eaaa1f33e771fa1651a4a7652b8a5f9fa7f6c1 before eaf783c005299a702f2cc96b08cd21ede081f098; affected a5eaaa1f33e771fa1651a4a7652b8a5f9fa7f6c1 before 568e68d8f80395a64848aa2946af8ade72da0ffb; affected a5eaaa1f33e771fa1651a4a7652b8a5f9fa7f6c1 before 82ec2c1e456b17451f0736c3983402642f961733; affected a5eaaa1f33e771fa1651a4a7652b8a5f9fa7f6c1 before 4e116372b7a4f87df0dc0ed4b0ab5b0bb0cc5796; affected a5eaaa1f33e771fa1651a4a7652b8a5f9fa7f6c1 before 662f6c6c6ff8a6c508e1646c09cae74e28f3cca6; affected a5eaaa1f33e771fa1651a4a7652b8a5f9fa7f6c1 before 1f03658f3e9b2f8fd1d1003ba389a0390b49a350; affected a5eaaa1f33e771fa1651a4a7652b8a5f9fa7f6c1 before c8510fbbea09ef0170b56b14dc2b5890dc75be07; affected a5eaaa1f33e771fa1651a4a7652b8a5f9fa7f6c1 before b70dc75e85ba968b7b76eebfe5d63000080b875b |
| Linux / Linux | affected 3.10; unaffected 0 before 3.10; unaffected 5.10.265 through 5.10.*; unaffected 5.15.216 through 5.15.*; unaffected 6.1.183 through 6.1.*; unaffected 6.6.148 through 6.6.*; unaffected 6.12.101 through 6.12.*; unaffected 6.18.42 through 6.18.*; unaffected 7.1.6 through 7.1.*; unaffected 7.2 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/eaf783c005299a702f2cc96b08cd21ede081f098
- https://git.kernel.org/stable/c/568e68d8f80395a64848aa2946af8ade72da0ffb
- https://git.kernel.org/stable/c/82ec2c1e456b17451f0736c3983402642f961733
- https://git.kernel.org/stable/c/4e116372b7a4f87df0dc0ed4b0ab5b0bb0cc5796
- https://git.kernel.org/stable/c/662f6c6c6ff8a6c508e1646c09cae74e28f3cca6
- https://git.kernel.org/stable/c/1f03658f3e9b2f8fd1d1003ba389a0390b49a350
- https://git.kernel.org/stable/c/c8510fbbea09ef0170b56b14dc2b5890dc75be07
- https://git.kernel.org/stable/c/b70dc75e85ba968b7b76eebfe5d63000080b875b