🇰🇷 한글 설명
Linux 커널의 Bluetooth btusb 드라이버 내 MediaTek 장치 처리 과정에서 NULL 포인터 역참조 취약점이 발견되었습니다. 특정 상황에서 인터페이스 번호를 가져오지 못해 NULL이 반환될 경우, 이를 검증하지 않고 함수를 호출하여 시스템 크래시(Crash)를 유발할 수 있습니다.
💡 쉬운 설명
블루투스 장치를 연결할 때 프로그램이 존재하지 않는 주소를 참조하려고 시도하여 컴퓨터가 갑자기 멈추거나 꺼질 수 있는 문제입니다. 특정 하드웨어 설정에서 발생할 수 있는 오류를 수정해야 합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: btusb: mediatek: Avoid btusb_mtk_claim_iso_intf() NULL deref
In btusb_mtk_setup(), we set `btmtk_data->isopkt_intf` to:
usb_ifnum_to_if(data->udev, MTK_ISO_IFNUM)
That function can return NULL in some cases. Even when it returns
NULL, though, we still go on to call btusb_mtk_claim_iso_intf().
As of commit e9087e828827 ("Bluetooth: btusb: mediatek: Add locks for
usb_driver_claim_interface()"), calling btusb_mtk_claim_iso_intf()
when `btmtk_data->isopkt_intf` is NULL will cause a crash because
we'll end up passing a bad pointer to device_lock(). Prior to that
commit we'd pass the NULL pointer directly to
usb_driver_claim_interface() which would detect it and return an
error, which was handled.
Resolve the crash in btusb_mtk_claim_iso_intf() by adding a NULL check
at the start of the function. This makes the code handle a NULL
`btmtk_data->isopkt_intf` the same way it did before the problematic
commit (just with a slight change to the error message printed).
📍 영향받는 시스템
Linux kernel (MediaTek Bluetooth btusb driver 사용 시스템)
⚔️ 공격 벡터
로컬 공격자가 특수하게 구성된 블루투스 장치를 연결하거나 관련 드라이버를 조작하여 시스템 크래시 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 btusb_mtk_claim_iso_intf() 함수의 NULL 체크 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전(commit e9087e828827 이후)인지 확인