🇰🇷 한글 설명
리눅스 커널의 carl9170 Wi-Fi 드라이버에서, 펌웨어 로딩에 실패한 장치에 대해 ping 명령을 보내려 할 때 널 포인터 역참조가 발생하는 문제가 해결되었습니다. 해당 장치는 ieee80211_register_hw()를 통과하지 못해 내부 작업 큐가 아직 생성되지 않은 상태에서 작업을 큐에 넣으려다 커널 크래시가 발생했습니다.
💡 쉬운 설명
Wi-Fi 장치의 펌웨어 로딩이 실패했는데도 시스템이 장치를 계속 확인하려다 컴퓨터가 멈추거나 비정상 종료될 수 있었습니다. 이번 수정으로 펌웨어 로딩에 실패한 장치는 더 이상 확인 요청을 보내지 않도록 바뀌었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: carl9170: do not ping device which has failed to load firmware
Syzkaller reports [1, 2] crashes caused by an attempts to ping
the device which has failed to load firmware. Since such a device
doesn't pass 'ieee80211_register_hw()', an internal workqueue
managed by 'ieee80211_queue_work()' is not yet created and an
attempt to queue work on it causes null-ptr-deref.
[1] https://syzkaller.appspot.com/bug?extid=9a4aec827829942045ff
[2] https://syzkaller.appspot.com/bug?extid=0d8afba53e8fb2633217
📍 영향받는 시스템
carl9170 드라이버를 사용하는 Linux 커널 (수정 이전 버전, 해당 USB Wi-Fi 어댑터 사용 시)
⚔️ 공격 벡터
물리적으로 연결된 악성 또는 결함 있는 carl9170 USB Wi-Fi 장치를 통해 커널 크래시(서비스 거부)를 유발할 수 있음
🛡️ 대응 방법
배포판의 최신 커널 업데이트를 설치하고 재부팅하거나, carl9170 모듈을 사용하지 않는다면 blacklist 처리
🔧 검증 코드
출력된 커널 버전이 배포판의 수정된 패치 버전 이상인지 확인하고, carl9170 모듈이 로드되지 않았다면 이 취약점의 영향을 받지 않으며, 로드되어 있다면 커널 업데이트 여부를 배포판 보안 공지로 확인합니다.
uname -r && (lsmod | grep carl9170 || echo 'carl9170 module not loaded') && (modinfo carl9170 2>/dev/null | grep -E '^(version|srcversion|filename)')