🇰🇷 한글 설명
Linux 커널의 ath11k Wi-Fi 드라이버에서 모니터 모드 동작 시 srng 데이터에 대한 잠금(lock) 메커니즘이 누락된 취약점입니다. 이로 인해 데이터 보호가 이루어지지 않아 경고가 발생하거나 시스템 불안정을 초래할 수 있습니다.
💡 쉬운 설명
Wi-Fi를 감시하는 모드에서 데이터를 처리할 때, 여러 작업이 동시에 같은 데이터를 건드리지 못하게 막아주는 '자물쇠'가 빠져 있는 상태입니다. 이로 인해 데이터가 꼬이거나 시스템에 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath11k: add srng->lock for ath11k_hal_srng_* in monitor mode
ath11k_hal_srng_* should be used with srng->lock to protect srng data.
For ath11k_dp_rx_mon_dest_process() and ath11k_dp_full_mon_process_rx(),
they use ath11k_hal_srng_* for many times but never call srng->lock.
So when running (full) monitor mode, warning will occur:
RIP: 0010:ath11k_hal_srng_dst_peek+0x18/0x30 [ath11k]
Call Trace:
? ath11k_hal_srng_dst_peek+0x18/0x30 [ath11k]
ath11k_dp_rx_process_mon_status+0xc45/0x1190 [ath11k]
? idr_alloc_u32+0x97/0xd0
ath11k_dp_rx_process_mon_rings+0x32a/0x550 [ath11k]
ath11k_dp_service_srng+0x289/0x5a0 [ath11k]
ath11k_pcic_ext_grp_napi_poll+0x30/0xd0 [ath11k]
__napi_poll+0x30/0x1f0
net_rx_action+0x198/0x320
__do_softirq+0xdd/0x319
So add srng->lock for them to avoid such warnings.
Inorder to fetch the srng->lock, should change srng's definition from
'void' to 'struct hal_srng'. And initialize them elsewhere to prevent
one line of code from being too long. This is consistent with other ring
process functions, such as ath11k_dp_process_rx().
Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.30
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
📍 영향받는 시스템
Linux kernel (ath11k driver using WCN6855 or QCN9074 hardware)
⚔️ 공격 벡터
로컬 공격자가 모니터 모드를 활성화하여 레이스 컨디션(Race Condition)을 유도함으로써 시스템 불안정 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 ath11k 드라이버의 srng->lock 로직을 적용해야 합니다.
🔧 검증 코드
현재 사용 중인 커널 버전과 ath11k 모듈의 정보를 확인하여 패치 적용 여부를 판단합니다.
uname -r && modinfo ath11k | grep version