Azure RTOS USBX是Azure RTOS开源的一个 USB 主机、设备和移动 (OTG) 嵌入式堆栈。与 Azure RTOS ThreadX 完全集成,可用于所有支持 Azure RTOS ThreadX 的处理器。 Azure RTOS USBX 6.1.12之前版本存在数字错误漏洞,该漏洞源于在_ux_host_class_pima_read中,有来自设备响应的数据长度,在第一个数据包中返回,并由L165 代码读取,作为 header_length,然后在L178代码中,有一个“if”分支,检查“(header_length - UX_HOST_CLASS_PIMA_DATA_HEADER_SIZE) > data_length”的表达式,如果header_length小于UX_HOST_CLASS_PIMA_DATA_HEADER_SIZE,计算可能溢出,然后L182代码计算data_length也溢出,这样,从 L192 开始的后面的 while 循环可以将 data_pointer 移动到意外地址并导致写缓冲区溢出。
Azure RTOS USBX是Azure RTOS开源的一个 USB 主机、设备和移动 (OTG) 嵌入式堆栈。与 Azure RTOS ThreadX 完全集成,可用于所有支持 Azure RTOS ThreadX 的处理器。 Azure RTOS USBX 6.1.12之前版本存在数字错误漏洞,该漏洞源于在_ux_host_class_pima_read中,有来自设备响应的数据长度,在第一个数据包中返回,并由L165 代码读取,作为 header_length,然后在L178代码中,有一个“if”分支,检查“(header_length - UX_HOST_CLASS_PIMA_DATA_HEADER_SIZE) > data_length”的表达式,如果header_length小于UX_HOST_CLASS_PIMA_DATA_HEADER_SIZE,计算可能溢出,然后L182代码计算data_length也溢出,这样,从 L192 开始的后面的 while 循环可以将 data_pointer 移动到意外地址并导致写缓冲区溢出。