🇰🇷 한글 설명
Linux 커널의 ath11k 드라이버에서 발생하는 취약점으로, 초기화되지 않은 피어로부터 단편화된 패킷을 수신할 때 시스템 충돌(Crash)이 발생할 수 있습니다. 특정 설정 환경에서 hostapd가 재시작될 때 uninitialized rx_frags 리스트를 참조하여 예외가 발생합니다.
💡 쉬운 설명
와이파이 장치가 준비되지 않은 상태에서 조각난 데이터 패킷을 받으면 시스템이 갑자기 멈추거나 꺼질 수 있는 문제입니다. 이는 장치가 데이터를 처리할 준비가 되었는지 확인하지 않고 작업을 수행하려 할 때 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath11k: Ignore frags from uninitialized peer in dp.
When max virtual ap interfaces are configured in all the bands with
ACS and hostapd restart is done every 60s, a crash is observed at
random times.
In this certain scenario, a fragmented packet is received for
self peer, for which rx_tid and rx_frags are not initialized in
datapath. While handling this fragment, crash is observed as the
rx_frag list is uninitialised and when we walk in
ath11k_dp_rx_h_sort_frags, skb null leads to exception.
To address this, before processing received fragments we check
dp_setup_done flag is set to ensure that peer has completed its
dp peer setup for fragment queue, else ignore processing the
fragments.
Call trace:
ath11k_dp_process_rx_err+0x550/0x1084 [ath11k]
ath11k_dp_service_srng+0x70/0x370 [ath11k]
0xffffffc009693a04
__napi_poll+0x30/0xa4
net_rx_action+0x118/0x270
__do_softirq+0x10c/0x244
irq_exit+0x64/0xb4
__handle_domain_irq+0x88/0xac
gic_handle_irq+0x74/0xbc
el1_irq+0xf0/0x1c0
arch_cpu_idle+0x10/0x18
do_idle+0x104/0x248
cpu_startup_entry+0x20/0x64
rest_init+0xd0/0xdc
arch_call_rest_init+0xc/0x14
start_kernel+0x480/0x4b8
Code: f9400281 f94066a2 91405021 b94a0023 (f9406401)
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
📍 영향받는 시스템
Linux kernel (ath11k driver), IPQ8074 hw2.0 기반 시스템
⚔️ 공격 벡터
네트워크를 통해 초기화되지 않은 피어로부터 조각화된(fragmented) 패킷을 전송하여 시스템 충돌 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 dp_setup_done 플래그 확인 로직을 적용해야 합니다.
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 최신 패치 버전인지 확인합니다.