🇰🇷 한글 설명
Linux 커널의 ath11k 드라이버에서 펌웨어 준비 과정이 실패하더라도 ATH11K_FLAG_REGISTERED 플래그가 무조건 설정되는 취약점이 발견되었습니다. 이로 인해 드라이버가 불완전한 상태로 초기화되어, 이후 SSR(Subsystem Restart) 과정에서 초기화되지 않은 srng 멤버를 참조하여 NULL 포인터 역참조 오류가 발생합니다.
💡 쉬운 설명
와이파이 드라이버가 펌웨어를 제대로 불러오지 못했는데도 성공했다고 착각하여 시스템 오류를 일으키는 문제입니다. 이 오류로 인해 시스템이 멈추거나 충돌할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath11k: fix NULL pointer dereference in ath11k_hal_srng_access_begin
In ATH11K_QMI_EVENT_FW_READY, ATH11K_FLAG_REGISTERED is set
unconditionally even when ath11k_core_qmi_firmware_ready() fails.
This leaves the driver in an inconsistent state where
initialization is considered complete although the firmware ready
handling did not finish successfully. During the subsequent SSR,
the driver enters the restart path based on this incorrect state
and dereferences uninitialized srng members, resulting in a NULL
pointer dereference.
Call trace:
ath11k_hal_srng_access_begin+0xc/0x60 [ath11k] (P)
ath11k_ce_cleanup_pipes+0x17c/0x180 [ath11k]
ath11k_core_restart+0x40/0x168 [ath11k]
Fix this by:
- skipping firmware_ready if ATH11K_FLAG_REGISTERED is already set
- setting ATH11K_FLAG_REGISTERED only when firmware_ready succeeds
- setting ATH11K_FLAG_QMI_FAIL and aborting the FW_READY handling
on error
Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.2.0.c2-00204-QCAMSLSWPLZ-1
📍 영향받는 시스템
Linux kernel (ath11k driver 사용 시스템)
⚔️ 공격 벡터
로컬 공격자가 특정 조건(펌웨어 로드 실패 유도 등)을 통해 드라이버의 불안정한 상태를 유발하여 시스템 충돌을 일으킬 수 있음
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 ath11k 드라이버의 플래그 설정 로직을 수정해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.