🇰🇷 한글 설명
Linux 커널의 catc USB 드라이버에서 엔드포인트 디스크립터를 검증하지 않고 하드코딩된 파이프를 사용하는 취약점이 발견되었습니다. 악의적으로 조작된 USB 장치가 드라이버가 예상하는 것과 다른 전송 유형을 제공할 경우 문제가 발생할 수 있습니다. 이를 해결하기 위해 엔드포인트 유형을 확인하는 검증 로직이 추가되었습니다.
💡 쉬운 설명
가짜 USB 장치를 컴퓨터에 연결했을 때, 컴퓨터가 장치의 정보를 제대로 확인하지 않고 잘못된 방식으로 데이터를 주고받으려 할 때 발생하는 문제입니다. 이로 인해 시스템 오류나 예기치 않은 동작이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: usb: catc: enable basic endpoint checking
catc_probe() fills three URBs with hardcoded endpoint pipes without
verifying the endpoint descriptors:
- usb_sndbulkpipe(usbdev, 1) and usb_rcvbulkpipe(usbdev, 1) for TX/RX
- usb_rcvintpipe(usbdev, 2) for interrupt status
A malformed USB device can present these endpoints with transfer types
that differ from what the driver assumes.
Add a catc_usb_ep enum for endpoint numbers, replacing magic constants
throughout. Add usb_check_bulk_endpoints() and usb_check_int_endpoints()
calls after usb_set_interface() to verify endpoint types before use,
rejecting devices with mismatched descriptors at probe time.
Similar to
- commit 90b7f2961798 ("net: usb: rtl8150: enable basic endpoint checking")
which fixed the issue in rtl8150.
📍 영향받는 시스템
Linux kernel (catc USB driver 포함 버전)
⚔️ 공격 벡터
조작된 엔드포인트 디스크립터를 가진 악성 USB 장치를 시스템에 물리적으로 연결
🛡️ 대응 방법
엔드포인트 검증 로직이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 패치된 최신 버전인지 확인