CVE-2021-47413 in Linux
요약
\~에 의해 VulDB • 2026. 06. 19.
리눅스 커널에서 다음 취약점이 해결되었습니다:
usb: chipidea: ci_hdrc_imx: 'phys' phandle도 검색하도록 수정
장치 트리(devicetree)에 USB PHY를 설명하기 위해 'phys'를 전달하는 경우(이는 Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt에서 권장되는 방식임), i.MX7 및 i.MX8MM 시스템에서 다음과 같은 NULL 포인터 역참조(NULL pointer dereference)가 관찰됩니다:
[ 1.489344] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000098
[ 1.498170] Mem abort info:
[ 1.500966] ESR = 0x96000044
[ 1.504030] EC = 0x25: DABT (current EL), IL = 32 bits
[ 1.509356] SET = 0, FnV = 0
[ 1.512416] EA = 0, S1PTW = 0
[ 1.515569] FSC = 0x04: level 0 translation fault
[ 1.520458] Data abort info:
[ 1.523349] ISV = 0, ISS = 0x00000044
[ 1.527196] CM = 0, WnR = 1
[ 1.530176] [0000000000000098] user address but active_mm is swapper
[ 1.536544] Internal error: Oops: 96000044 [#1] PREEMPT SMP
[ 1.542125] Modules linked in:
[ 1.545190] CPU: 3 PID: 7 Comm: kworker/u8:0 Not tainted 5.14.0-dirty #3
[ 1.551901] Hardware name: Kontron i.MX8MM N801X S (DT)
[ 1.557133] Workqueue: events_unbound deferred_probe_work_func
[ 1.562984] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO BTYPE=--)
[ 1.568998] pc : imx7d_charger_detection+0x3f0/0x510
[ 1.573973] lr : imx7d_charger_detection+0x22c/0x510
이 문제는 충전기(charger) 함수들이 phy의 존재 여부를 `imx_usbmisc_data` 구조체(data->usb_phy) 내부에서 확인하지만, chipidea 코어는 'phys'를 통해 전달된 usb_phy를 대신 `struct ci_hdrc`(ci->usb_phy)에 채우기 때문에 발생합니다.
이로 인해 `imx7d_charger_detection()` 내에서 NULL 포인터 역참조가 발생하게 됩니다.
`fsl,usbphy`를 찾지 못한 경우 'phys'도 검색하도록 수정하여 이 문제를 해결합니다.
imx7s-warp 보드에서 테스트되었습니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.