🇰🇷 한글 설명
Azure RTOS USBx의 USB CDC ECM 호스트 지원 기능 중 `_ux_host_class_cdc_ecm_mac_address_get` 함수에서 정수 언더플로우 및 버퍼 오버플로우 취약점이 발견되었습니다. 공격자가 MAC 주소 문자열 디스크립터 길이를 0 또는 1로 설정하면 이를 악용하여 원격 코드 실행(RCE)이나 서비스 거부(DoS)를 유발할 수 있습니다.
💡 쉬운 설명
USB 장치가 컴퓨터에 연결될 때 정보를 읽어오는 과정에서 발생하는 오류입니다. 나쁜 의도를 가진 USB 장치를 연결하면 컴퓨터의 제어권을 뺏거나 시스템을 멈추게 할 수 있습니다.
🇺🇸 원문 (English)
Azure RTOS USBx is a USB host, device, and on-the-go (OTG) embedded stack, fully integrated with Azure RTOS ThreadX and available for all Azure RTOS ThreadX–supported processors. Azure RTOS USBX implementation of host support for USB CDC ECM includes an integer underflow and a buffer overflow in the `_ux_host_class_cdc_ecm_mac_address_get` function which may be potentially exploited to achieve remote code execution or denial of service. Setting mac address string descriptor length to a `0` or `1` allows an attacker to introduce an integer underflow followed (string_length) by a buffer overflow of the `cdc_ecm -> ux_host_class_cdc_ecm_node_id` array. This may allow one to redirect the code execution flow or introduce a denial of service. The fix has been included in USBX release [6.1.12](https://github.com/azure-rtos/usbx/releases/tag/v6.1.12_rel). Improved mac address string descriptor length validation to check for unexpectedly small values may be used as a workaround.
📍 영향받는 시스템
Azure RTOS USBx (v6.1.12 미만 버전)
⚔️ 공격 벡터
조작된 MAC 주소 문자열 길이를 가진 USB CDC ECM 장치를 호스트에 연결
🛡️ 대응 방법
USBX를 v6.1.12 이상 버전으로 업데이트하거나 MAC 주소 문자열 길이 검증 로직을 추가
🔧 검증 코드
프로젝트 소스 코드 내 USBX 버전 정보가 6.1.12 미만인지 확인합니다.
grep -r "USBX" /path/to/your/project/source/code | xargs grep -E "version|release"