🇰🇷 한글 설명
Linux 커널의 usb-storage 드라이버 내 sierra_ms 모듈에서 발생하는 취약점으로, USB 장치가 요청된 데이터보다 적은 양의 정보를 전송할 경우 초기화되지 않은 커널 힙 메모리가 노출될 수 있습니다. 공격자는 악의적인 USB 장치를 통해 시스템의 민감한 커널 메모리 내용을 읽어낼 수 있습니다.
💡 쉬운 설명
특수한 USB 장치를 컴퓨터에 연결하면 컴퓨터 내부의 비밀스러운 메모리 정보가 밖으로 새어 나갈 수 있는 보안 결함입니다. 이 결함을 이용하면 해커가 시스템의 중요한 정보를 훔쳐볼 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
usb: storage: sierra_ms: reject short SWoC info transfers
sierra_get_swoc_info() requests sizeof(struct swoc_info) (60) bytes
from the device via usb_control_msg(), but its callers only treat a
negative return value as failure. A device that answers the
vendor-specific GetSwocInfo request with a short IN transfer is
therefore accepted, leaving the tail of the freshly allocated
(kmalloc(), non-zeroing) swoc_info buffer uninitialized.
truinst_show() subsequently prints swocInfo->rev, swocInfo->LinuxSKU
and swocInfo->LinuxVer from that buffer into the world-readable
(0444) "truinst" sysfs attribute. An emulated/malicious USB device
(VID 0x1199, PID 0x0fff) can exploit this to disclose up to 5 bytes
of stale kernel heap memory (kmalloc-64) to unprivileged userspace,
once per sysfs read, indefinitely. On kernels built without
init_on_alloc this leaks recently freed heap contents.
Only accept the transfer when the full structure was received.
sierra_ms_init() already retries failed queries, so well-behaved
devices are unaffected.
📍 영향받는 시스템
Linux kernel (usb: storage: sierra_ms driver 포함 버전)
⚔️ 공격 벡터
악의적으로 조작된 USB 장치(VID 0x1199, PID 0x0fff)를 연결하여 불완전한 데이터 전송을 유도함
🛡️ 대응 방법
커널 패치를 적용하여 usb_control_msg()의 반환값이 구조체 크기와 일치하는지 확인하도록 업데이트해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.