🇰🇷 한글 설명
리눅스 커널의 ath11k 무선랜 드라이버에서, 고정 펌웨어 메모리 영역이 없는 AHB 칩셋의 경우 초기화 시 IOMMU 매핑을 하지 않았음에도 종료(shutdown/rmmod) 시 unmap을 시도하여 NULL 포인터 역참조가 발생하는 문제입니다. 펌웨어 고정 메모리 hw_param 조건 검사를 추가하여 해결되었습니다.
💡 쉬운 설명
무선랜 드라이버가 매핑하지 않은 메모리를 해제하려고 시도하면서 시스템이 비정상 종료될 수 있습니다. 재부팅이나 드라이버 제거 시 커널 패닉이 발생할 수 있는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath11k: fix deinitialization of firmware resources
Currently, in ath11k_ahb_fw_resources_init(), iommu domain
mapping is done only for the chipsets having fixed firmware
memory. Also, for such chipsets, mapping is done only if it
does not have TrustZone support.
During deinitialization, only if TrustZone support is not there,
iommu is unmapped back. However, for non fixed firmware memory
chipsets, TrustZone support is not there and this makes the
condition check to true and it tries to unmap the memory which
was not mapped during initialization.
This leads to the following trace -
[ 83.198790] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
[ 83.259537] Modules linked in: ath11k_ahb ath11k qmi_helpers
.. snip ..
[ 83.280286] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 83.287228] pc : __iommu_unmap+0x30/0x140
[ 83.293907] lr : iommu_unmap+0x5c/0xa4
[ 83.298072] sp : ffff80000b3abad0
.. snip ..
[ 83.369175] Call trace:
[ 83.376282] __iommu_unmap+0x30/0x140
[ 83.378541] iommu_unmap+0x5c/0xa4
[ 83.382360] ath11k_ahb_fw_resource_deinit.part.12+0x2c/0xac [ath11k_ahb]
[ 83.385666] ath11k_ahb_free_resources+0x140/0x17c [ath11k_ahb]
[ 83.392521] ath11k_ahb_shutdown+0x34/0x40 [ath11k_ahb]
[ 83.398248] platform_shutdown+0x20/0x2c
[ 83.403455] device_shutdown+0x16c/0x1c4
[ 83.407621] kernel_restart_prepare+0x34/0x3c
[ 83.411529] kernel_restart+0x14/0x74
[ 83.415781] __do_sys_reboot+0x1c4/0x22c
[ 83.419427] __arm64_sys_reboot+0x1c/0x24
[ 83.423420] invoke_syscall+0x44/0xfc
[ 83.427326] el0_svc_common.constprop.3+0xac/0xe8
[ 83.430974] do_el0_svc+0xa0/0xa8
[ 83.435659] el0_svc+0x1c/0x44
[ 83.438957] el0t_64_sync_handler+0x60/0x144
[ 83.441910] el0t_64_sync+0x15c/0x160
[ 83.446343] Code: aa0103f4 f9400001 f90027a1 d2800001 (f94006a0)
[ 83.449903] ---[ end trace 0000000000000000 ]---
This can be reproduced by probing an AHB chipset which is not
having a fixed memory region. During reboot (or rmmod) trace
can be seen.
Fix this issue by adding a condition check on firmware fixed memory
hw_param as done in the counter initialization function.
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
📍 영향받는 시스템
IPQ8074 등 고정 펌웨어 메모리가 없는 AHB 기반 ath11k 무선랜 칩셋을 사용하는 리눅스 커널 시스템 (수정 이전 커널 버전)
⚔️ 공격 벡터
로컬 환경에서 장치 재부팅 또는 드라이버 제거(rmmod)를 유발할 때 발생하는 서비스 거부(커널 패닉) 문제로, 원격 공격 경로는 확인되지 않았습니다.
🛡️ 대응 방법
Linux 커널을 해당 CVE 수정 패치가 포함된 최신 안정 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고나 커널 changelog에서 CVE-2023-53532 수정 포함 여부와 대조하고, ath11k_ahb 모듈이 로드되어 있지 않다면 이 취약점의 영향을 받지 않습니다.
uname -r && (modinfo ath11k_ahb 2>/dev/null | grep -E '^(version|srcversion|filename)' || lsmod | grep -E 'ath11k')