🇰🇷 한글 설명
Linux 커널의 can: peak_usb 드라이버에서 USB 채널 인덱스에 대한 경계 검사가 누락되어 발생한 취약점입니다. USB 페이로드에서 유도된 인덱스 값이 배열 크기를 초과할 경우 힙 영역의 범위를 벗어난 읽기가 발생하며, 이는 IRQ 컨텍스트 내에서 커널 패닉을 유발할 수 있습니다.
💡 쉬운 설명
USB 장치가 보내는 잘못된 신호를 처리할 때, 컴퓨터 메모리의 허용된 범위를 넘어서 읽으려고 시도하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 재부팅되는 현상이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
can: peak_usb: add bounds check for USB channel index
The channel control index ctrl_idx is derived from rx->len which comes
directly from a device USB payload. The mask 0x0f allows values 0-15, but
the array size of usb_if->dev[] is only 2. Values 2-15 cause heap
out-of-bounds read, eventually causing kernel panic in the IRQ context.
Add bounds checking for ctrl_idx before the array access in both
pcan_usb_pro_handle_canmsg() and pcan_usb_pro_handle_error().
📍 영향받는 시스템
Linux kernel (can: peak_usb 드라이버를 사용하는 시스템)
⚔️ 공격 벡터
조작된 USB 페이로드를 전송하는 악의적인 USB 장치를 통한 로컬 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 pcan_usb_pro_handle_canmsg 및 pcan_usb_pro_handle_error 함수에 경계 검사 로직을 적용해야 합니다.
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전 이상인지 확인합니다.
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux