🇰🇷 한글 설명
Linux 커널의 Atheros WiFi 드라이버(ath9k_htc)에서 USB 기기가 시스템에 노출되는 시점과 드라이버 초기화 완료 시점 사이의 race condition으로 인해, 초기화되지 않은 데이터 구조에 접근할 수 있는 취약점입니다. 이를 통해 NULL pointer dereference 및 메모리 손상이 발생할 수 있습니다.
💡 쉬운 설명
USB 무선랜 어댑터가 준비되기 전에 시스템이 이벤트를 처리하려고 시도하여 충돌이 발생할 수 있습니다. 이는 USB WiFi 동글을 연결할 때 드라이버 로딩 중에 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath9k: delay all of ath9k_wmi_event_tasklet() until init is complete
The ath9k_wmi_event_tasklet() used in ath9k_htc assumes that all the data
structures have been fully initialised by the time it runs. However, because of
the order in which things are initialised, this is not guaranteed to be the
case, because the device is exposed to the USB subsystem before the ath9k driver
initialisation is completed.
We already committed a partial fix for this in commit:
8b3046abc99e ("ath9k_htc: fix NULL pointer dereference at ath9k_htc_tx_get_packet()")
However, that commit only aborted the WMI_TXSTATUS_EVENTID command in the event
tasklet, pairing it with an "initialisation complete" bit in the TX struct. It
seems syzbot managed to trigger the race for one of the other commands as well,
so let's just move the existing synchronisation bit to cover the whole
tasklet (setting it at the end of ath9k_htc_probe_device() instead of inside
ath9k_tx_init()).
📍 영향받는 시스템
Linux kernel ath9k_htc 드라이버 사용 시스템 (USB 기반 Atheros AR9271, AR7010 등의 WiFi 어댑터)
⚔️ 공격 벡터
USB Atheros WiFi 어댑터 연결 및 드라이버 초기화 과정에서의 race condition 악용
🛡️ 대응 방법
Linux kernel을 패치된 버전으로 업그레이드 (커널 버전별 패치 백포트 적용)
🔧 검증 코드
현재 커널 버전과 ath9k 모듈 로드 상태를 확인합니다. 모듈이 로드된 경우, Linux 배포판의 보안 공지에서 해당 커널 버전의 패치 상태를 확인하세요.
uname -r && lsmod | grep -i ath9k