🇰🇷 한글 설명
Linux 커널의 gs_usb 드라이버에서 URB 메모리 누수 취약점이 발견되었습니다. USB-in 전송 완료 콜백 함수에서 URB가 앵커에서 해제되어, 장치 종료 시 메모리가 적절히 해제되지 않는 문제입니다. 이를 해결하기 위해 콜백 함수 내에서 URB를 다시 앵커에 등록하도록 수정되었습니다.
💡 쉬운 설명
USB 장치를 사용할 때 컴퓨터의 메모리가 제대로 비워지지 않고 계속 쌓이는 문제가 있었습니다. 이로 인해 장시간 사용 시 시스템 메모리가 부족해질 수 있는 결함입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
can: gs_usb: gs_usb_receive_bulk_callback(): fix URB memory leak
In gs_can_open(), the URBs for USB-in transfers are allocated, added to the
parent->rx_submitted anchor and submitted. In the complete callback
gs_usb_receive_bulk_callback(), the URB is processed and resubmitted. In
gs_can_close() the URBs are freed by calling
usb_kill_anchored_urbs(parent->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 gs_can_close().
Fix the memory leak by anchoring the URB in the
gs_usb_receive_bulk_callback() to the parent->rx_submitted anchor.
📍 영향받는 시스템
Linux kernel (gs_usb driver module)
⚔️ 공격 벡터
로컬 공격자가 특정 USB 장치를 연결하거나 드라이버를 조작하여 점진적인 메모리 고갈 유도
🛡️ 대응 방법
gs_usb 드라이버의 메모리 누수 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인