🇰🇷 한글 설명
Linux 커널 rtw88 WiFi 드라이버의 펌웨어 로딩 중 race condition으로 인한 Use-After-Free(UAF) 취약점입니다. rtw_usb_probe() 실패 시 rtw_usb_disconnect()에서 정상 펌웨어 로딩이 완료되지 않은 상태로 메모리를 해제하면서 KASAN에 의해 탐지된 UAF가 발생합니다.
💡 쉬운 설명
WiFi 드라이버가 펌웨어를 로딩할 때 두 가지 로드 작업이 동시에 진행되지 않아서, 하나가 여전히 진행 중인데 다른 하나가 메모리를 정리하려고 할 때 충돌이 발생합니다. 이를 통해 시스템이 비정상 종료되거나 권한 상승이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: rtw88: always wait for both firmware loading attempts
In 'rtw_wait_firmware_completion()', always wait for both (regular and
wowlan) firmware loading attempts. Otherwise if 'rtw_usb_intf_init()'
has failed in 'rtw_usb_probe()', 'rtw_usb_disconnect()' may issue
'ieee80211_free_hw()' when one of 'rtw_load_firmware_cb()' (usually
the wowlan one) is still in progress, causing UAF detected by KASAN.
📍 영향받는 시스템
Linux kernel (특히 rtw88 WiFi 드라이버 지원 버전, Realtek RTL8xxx USB WiFi 어댑터)
⚔️ 공격 벡터
로컬: 시스템에 USB WiFi 어댑터 연결/분리 반복으로 race condition 유발
🛡️ 대응 방법
Linux 커널을 수정 버전으로 업데이트하거나 rtw88 드라이버의 펌웨어 로딩 로직에서 두 로딩 작업을 모두 대기하도록 패치 적용
🔧 검증 코드
커널 버전과 rtw88 드라이버 로드 여부를 확인합니다. rtw88이 로드된 상태면 해당 시스템이 잠재적으로 영향받을 수 있습니다.
uname -r | grep -E '^[0-9]+\.[0-9]+' && lsmod | grep -i rtw88