🇰🇷 한글 설명
USB usbtmc 드라이버에서 사용자가 지정한 타임아웃 값이 적용되지 않아 커널 스레드가 무한정 대기할 수 있는 취약점입니다. usb_bulk_msg() 함수가 강제 종료 불가능한 대기(unkillable wait)를 사용하므로, usb_bulk_msg_killable() 함수로 변경하여 사용자 신호에 응답 가능하도록 개선합니다.
💡 쉬운 설명
USB 장치 통신 드라이버가 사용자의 타임아웃 설정을 무시하고 무한정 대기하는 문제입니다. 악의적 사용자가 이를 악용해 시스템 커널을 먹통으로 만들 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
USB: usbtmc: Use usb_bulk_msg_killable() with user-specified timeouts
The usbtmc driver accepts timeout values specified by the user in an
ioctl command, and uses these timeouts for some usb_bulk_msg() calls.
Since the user can specify arbitrarily long timeouts and
usb_bulk_msg() uses unkillable waits, call usb_bulk_msg_killable()
instead to avoid the possibility of the user hanging a kernel thread
indefinitely.
📍 영향받는 시스템
Linux kernel의 USB usbtmc 드라이버 사용 시스템 (모든 배포판, 커널 5.x~6.x)
⚔️ 공격 벡터
로컬 공격자가 ioctl() 명령으로 극도로 긴 타임아웃 값을 설정하여 커널 스레드를 의도적으로 교착 상태에 빠뜨림
🛡️ 대응 방법
Linux 커널을 패치 버전 이상으로 업데이트하여 usb_bulk_msg_killable() 함수 적용
🔧 검증 코드
명령어에서 usb_bulk_msg_killable 심볼이 나타나면 패치가 적용된 상태입니다.
grep -A5 'usb_bulk_msg_killable' /proc/kallsyms 2>/dev/null | head -1