CVE-2024-36895

In the Linux kernel, the following vulnerability has been resolved: usb: gadget: uvc: use correct buffer size when parsing configfs lists This commit fixes uvc gadget support on 32-bit platforms. Commit 0df28607c5cb ("usb: gadget: uvc: Generalise helper functions for reuse") introduced a helper function __uvcg_iter_item_entries() to aid with parsing lists of items on configfs attributes stores. This function is a generalization of another very similar function, which used a stack-allocated temporary buffer of fixed size for each item in the list and used the sizeof() operator to check for potential buffer overruns. The new function was changed to allocate the now variably sized temp buffer on heap, but wasn't properly updated to also check for max buffer size using the computed size instead of sizeof() operator. As a result, the maximum item size was 7 (plus null terminator) on 64-bit platforms, and 3 on 32-bit ones. While 7 is accidentally just barely enough, 3 is definitely too small for some of UVC configfs attributes. For example, dwFrameInteval, specified in 100ns units, usually has 6-digit item values, e.g. 166666 for 60fps.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc6:*:*:*:*:*:*

History

18 Sep 2025, 14:47

Type Values Removed Values Added
CPE cpe:2.3:o:linux:linux_kernel:6.9:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc6:*:*:*:*:*:*
CWE CWE-787
First Time Linux
Linux linux Kernel
References () https://git.kernel.org/stable/c/650ae71c80749fc7cb8858c8049f532eaec64410 - () https://git.kernel.org/stable/c/650ae71c80749fc7cb8858c8049f532eaec64410 - Patch
References () https://git.kernel.org/stable/c/7a54e5052bde582fd0e7677334fe7a5be92e242c - () https://git.kernel.org/stable/c/7a54e5052bde582fd0e7677334fe7a5be92e242c - Patch
References () https://git.kernel.org/stable/c/a422089ce42ced73713e5032aad29a9a7cbe9528 - () https://git.kernel.org/stable/c/a422089ce42ced73713e5032aad29a9a7cbe9528 - Patch
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 7.8

21 Nov 2024, 09:22

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se resolvió la siguiente vulnerabilidad: usb: gadget: uvc: use el tamaño de búfer correcto al analizar listas de configfs. Este commit corrige la compatibilidad con gadgets uvc en plataformas de 32 bits. El commit 0df28607c5cb ("usb: gadget: uvc: Generalizar funciones auxiliares para su reutilización") introdujo una función auxiliar __uvcg_iter_item_entries() para ayudar con el análisis de listas de elementos en las tiendas de atributos de configfs. Esta función es una generalización de otra función muy similar, que utilizaba un búfer temporal de tamaño fijo asignado por la pila para cada elemento de la lista y utilizaba el operador sizeof() para comprobar posibles desbordamientos del búfer. La nueva función se cambió para asignar el búfer temporal ahora de tamaño variable en el montón, pero no se actualizó correctamente para verificar también el tamaño máximo del búfer usando el tamaño calculado en lugar del operador sizeof(). Como resultado, el tamaño máximo de elemento fue 7 (más terminador nulo) en plataformas de 64 bits y 3 en plataformas de 32 bits. Si bien 7 accidentalmente es apenas suficiente, 3 es definitivamente demasiado pequeño para algunos de los atributos de configuración de UVC. Por ejemplo, dwFrameInteval, especificado en unidades de 100 ns, normalmente tiene valores de elementos de 6 dígitos, por ejemplo, 166666 para 60 fps.
References () https://git.kernel.org/stable/c/650ae71c80749fc7cb8858c8049f532eaec64410 - () https://git.kernel.org/stable/c/650ae71c80749fc7cb8858c8049f532eaec64410 -
References () https://git.kernel.org/stable/c/7a54e5052bde582fd0e7677334fe7a5be92e242c - () https://git.kernel.org/stable/c/7a54e5052bde582fd0e7677334fe7a5be92e242c -
References () https://git.kernel.org/stable/c/a422089ce42ced73713e5032aad29a9a7cbe9528 - () https://git.kernel.org/stable/c/a422089ce42ced73713e5032aad29a9a7cbe9528 -

30 May 2024, 16:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-05-30 16:15

Updated : 2025-09-18 14:47


NVD link : CVE-2024-36895

Mitre link : CVE-2024-36895

CVE.ORG link : CVE-2024-36895


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-787

Out-of-bounds Write