Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en Azure RTOS USBX (CVE-2022-39293)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-191 Subdesbordamiento de entero
Fecha de publicación:
13/10/2022
Última modificación:
27/10/2025

Descripción

Azure RTOS USBX es una pila embebida de host, dispositivo y on-the-go (OTG) USB de alto rendimiento, que está totalmente integrada con Azure RTOS ThreadX. El caso es que, en [_ux_host_class_pima_read](https://github.com/azure-rtos/usbx/blob/master/common/usbx_host_classes/src/ux_host_class_pima_read.c), se presenta una longitud de datos de la respuesta del dispositivo, devuelta en el primer paquete, y leída por [L165 code](https://github.com/azure-rtos/usbx/blob/082fd9db09a3669eca3358f10b8837a5c1635c0b/common/usbx_host_classes/src/ux_host_class_pima_read.c#L165), como header_length. Entonces en [L178 code](https://github.com/azure-rtos/usbx/blob/082fd9db09a3669eca3358f10b8837a5c1635c0b/common/usbx_host_classes/src/ux_host_class_pima_read.c#L178), se presenta una rama "if", que comprueba la expresión de "(header_length - UX_HOST_CLASS_PIMA_DATA_HEADER_SIZE) ) data_length" donde si header_length es menor que UX_HOST_CLASS_PIMA_DATA_HEADER_SIZE, el cálculo podría desbordarse y entonces [L182 code](https://github. com/azure-rtos/usbx/blob/082fd9db09a3669eca3358f10b8837a5c1635c0b/common/usbx_host_classes/src/ux_host_class_pima_read.c#L182) el cálculo de data_length también es desbordado, de esta forma el posterior [inicio del bucle while desde L192](https://github.com/azure-rtos/usbx/blob/082fd9db09a3669eca3358f10b8837a5c1635c0b/common/usbx_host_classes/src/ux_host_class_pima_read.c#L192) puede mover data_pointer a una dirección no esperada y causar un desbordamiento del buffer de escritura. La corrección ha sido incluida en USBX versión [6.1.12](https://github.com/azure-rtos/usbx/releases/tag/v6.1.12_rel). Puede usarse lo siguiente como mitigación: Añadir la comprobación de "header_length": 1. Debe ser mayor que "UX_HOST_CLASS_PIMA_DATA_HEADER_SIZE". 1. Debe ser mayor o igual que la longitud de datos devuelta actualmente ("transfer_request -) ux_transfer_request_actual_length")

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:eclipse:threadx_usbx:*:*:*:*:*:*:*:* 6.1.12 (excluyendo)