🇰🇷 한글 설명
Linux 커널의 kvaser_usb 드라이버에서 URB(USB Request Block) 메모리 누수 취약점이 발견되었습니다. USB 프레임워크가 콜백 함수 호출 전 URB의 앵커를 해제함에 따라, 인터페이스 제거 시 메모리가 적절히 해제되지 않는 문제가 있었습니다.
💡 쉬운 설명
USB 장치를 사용하는 과정에서 컴퓨터의 메모리가 제대로 비워지지 않고 계속 쌓이는 버그가 있습니다. 이 문제가 지속되면 시스템의 메모리가 부족해져 성능 저하나 시스템 불안정을 초래할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
can: kvaser_usb: kvaser_usb_read_bulk_callback(): fix URB memory leak
Fix similar memory leak as in commit 7352e1d5932a ("can: gs_usb:
gs_usb_receive_bulk_callback(): fix URB memory leak").
In kvaser_usb_set_{,data_}bittiming() -> kvaser_usb_setup_rx_urbs(), the
URBs for USB-in transfers are allocated, added to the dev->rx_submitted
anchor and submitted. In the complete callback
kvaser_usb_read_bulk_callback(), the URBs are processed and resubmitted. In
kvaser_usb_remove_interfaces() the URBs are freed by calling
usb_kill_anchored_urbs(&dev->rx_submitted).
However, this does not take into account that the USB framework unanchors
the URB before the complete function is called. This means that once an
in-URB has been completed, it is no longer anchored and is ultimately not
released in usb_kill_anchored_urbs().
Fix the memory leak by anchoring the URB in the
kvaser_usb_read_bulk_callback() to the dev->rx_submitted anchor.
📍 영향받는 시스템
Linux kernel (kvaser_usb 드라이버를 사용하는 시스템)
⚔️ 공격 벡터
직접적인 공격보다는 장치 연결/해제 반복을 통한 자원 고갈(DoS) 가능성
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전인지 확인하십시오.