🇰🇷 한글 설명
Linux 커널의 ath12k Wi-Fi 드라이버에서 펌웨어가 충돌했을 때 복구 과정 중에도 WMI 명령을 계속 전송하여 커널 호출 트레이스(Kernel Call Trace)가 발생하는 취약점입니다. 이를 방지하기 위해 펌웨어 충돌 알림 시 특정 플래그를 설정하여 복구 중 명령 전송을 차단하도록 수정되었습니다.
💡 쉬운 설명
Wi-Fi 장치의 소프트웨어가 고장 나서 다시 시작하는 동안, 컴퓨터가 계속해서 명령을 보내려고 시도하다가 시스템 오류(커널 패닉 등)를 일으키는 문제입니다. 이제 장치가 복구 중일 때는 명령을 보내지 않도록 안전장치가 추가되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath12k: Prevent sending WMI commands to firmware during firmware crash
Currently, we encounter the following kernel call trace when a firmware
crash occurs. This happens because the host sends WMI commands to the
firmware while it is in recovery, causing the commands to fail and
resulting in the kernel call trace.
Set the ATH12K_FLAG_CRASH_FLUSH and ATH12K_FLAG_RECOVERY flags when the
host driver receives the firmware crash notification from MHI. This
prevents sending WMI commands to the firmware during recovery.
Call Trace:
<TASK>
dump_stack_lvl+0x75/0xc0
register_lock_class+0x6be/0x7a0
? __lock_acquire+0x644/0x19a0
__lock_acquire+0x95/0x19a0
lock_acquire+0x265/0x310
? ath12k_ce_send+0xa2/0x210 [ath12k]
? find_held_lock+0x34/0xa0
? ath12k_ce_send+0x56/0x210 [ath12k]
_raw_spin_lock_bh+0x33/0x70
? ath12k_ce_send+0xa2/0x210 [ath12k]
ath12k_ce_send+0xa2/0x210 [ath12k]
ath12k_htc_send+0x178/0x390 [ath12k]
ath12k_wmi_cmd_send_nowait+0x76/0xa0 [ath12k]
ath12k_wmi_cmd_send+0x62/0x190 [ath12k]
ath12k_wmi_pdev_bss_chan_info_request+0x62/0xc0 [ath1
ath12k_mac_op_get_survey+0x2be/0x310 [ath12k]
ieee80211_dump_survey+0x99/0x240 [mac80211]
nl80211_dump_survey+0xe7/0x470 [cfg80211]
? kmalloc_reserve+0x59/0xf0
genl_dumpit+0x24/0x70
netlink_dump+0x177/0x360
__netlink_dump_start+0x206/0x280
genl_family_rcv_msg_dumpit.isra.22+0x8a/0xe0
? genl_family_rcv_msg_attrs_parse.isra.23+0xe0/0xe0
? genl_op_lock.part.12+0x10/0x10
? genl_dumpit+0x70/0x70
genl_rcv_msg+0x1d0/0x290
? nl80211_del_station+0x330/0x330 [cfg80211]
? genl_get_cmd_both+0x50/0x50
netlink_rcv_skb+0x4f/0x100
genl_rcv+0x1f/0x30
netlink_unicast+0x1b6/0x260
netlink_sendmsg+0x31a/0x450
__sock_sendmsg+0xa8/0xb0
____sys_sendmsg+0x1e4/0x260
___sys_sendmsg+0x89/0xe0
? local_clock_noinstr+0xb/0xc0
? rcu_is_watching+0xd/0x40
? kfree+0x1de/0x370
? __sys_sendmsg+0x7a/0xc0
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
📍 영향받는 시스템
Linux kernel with ath12k driver (specifically QCN9274 hardware environments)
⚔️ 공격 벡터
펌웨어 충돌을 유도하여 커널 오류 및 시스템 불안정성을 초래하는 DoS(서비스 거부) 공격 가능성
🛡️ 대응 방법
Linux 커널을 최신 패치가 적용된 버전으로 업데이트하여 ath12k 드라이버의 수정 사항을 반영해야 합니다.
🔧 검증 코드
현재 사용 중인 커널 버전과 ath12k 모듈의 정보를 확인하여 패치 적용 여부를 검토합니다.
uname -r && modinfo ath12k | grep -i version