🇰🇷 한글 설명
Linux 커널의 ath9k 무선랜 드라이버에서, USB 장치가 ATH9K로 주장하면서 기대하는 엔드포인트(벌크)가 없고 인터럽트 엔드포인트만 있을 때 드라이버가 이를 검증하지 않아 내부 경고(BOGUS urb xfer)와 커널 WARNING이 발생하는 문제입니다. 수정으로 필요한 USB 엔드포인트 존재 여부를 확인하도록 했습니다.
💡 쉬운 설명
가짜이거나 잘못 만들어진 USB 무선랜 장치를 컴퓨터에 연결하면 리눅스 커널이 제대로 처리하지 못해 경고가 발생할 수 있습니다. 이 문제는 장치 연결 시 발생하는 안정성 결함입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath9k: verify the expected usb_endpoints are present
The bug arises when a USB device claims to be an ATH9K but doesn't
have the expected endpoints. (In this case there was an interrupt
endpoint where the driver expected a bulk endpoint.) The kernel
needs to be able to handle such devices without getting an internal error.
usb 1-1: BOGUS urb xfer, pipe 3 != type 1
WARNING: CPU: 3 PID: 500 at drivers/usb/core/urb.c:493 usb_submit_urb+0xce2/0x1430 drivers/usb/core/urb.c:493
Modules linked in:
CPU: 3 PID: 500 Comm: kworker/3:2 Not tainted 5.10.135-syzkaller #0
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
Workqueue: events request_firmware_work_func
RIP: 0010:usb_submit_urb+0xce2/0x1430 drivers/usb/core/urb.c:493
Call Trace:
ath9k_hif_usb_alloc_rx_urbs drivers/net/wireless/ath/ath9k/hif_usb.c:908 [inline]
ath9k_hif_usb_alloc_urbs+0x75e/0x1010 drivers/net/wireless/ath/ath9k/hif_usb.c:1019
ath9k_hif_usb_dev_init drivers/net/wireless/ath/ath9k/hif_usb.c:1109 [inline]
ath9k_hif_usb_firmware_cb+0x142/0x530 drivers/net/wireless/ath/ath9k/hif_usb.c:1242
request_firmware_work_func+0x12e/0x240 drivers/base/firmware_loader/main.c:1097
process_one_work+0x9af/0x1600 kernel/workqueue.c:2279
worker_thread+0x61d/0x12f0 kernel/workqueue.c:2425
kthread+0x3b4/0x4a0 kernel/kthread.c:313
ret_from_fork+0x22/0x30 arch/x86/entry/entry_64.S:299
Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
📍 영향받는 시스템
ath9k 드라이버를 사용하는 Linux 커널 (5.10 계열 등 해당 패치 이전 버전)
⚔️ 공격 벡터
악의적으로 조작된 USB 무선랜 장치를 대상 시스템에 물리적으로 연결하여 커널 경고 및 불안정을 유발
🛡️ 대응 방법
Linux 커널을 해당 CVE 수정이 포함된 최신 안정 버전으로 업데이트
🔧 검증 코드
커널 버전이 CVE 수정이 포함된 배포판 업데이트 버전 이상인지, 그리고 ath9k 모듈이 설치되어 있는지 확인하며, 정확한 패치 여부는 배포판 보안 공지(changelog)와 대조해야 합니다.
uname -r && (modinfo ath9k 2>/dev/null | grep -E '^(version|srcversion|filename)')