🔍 CVE-2026-63960

0.0
CVSS Score
UNKNOWN
2026-07-19
2026-07-30 14:51
✅ 완료

🇰🇷 한글 설명

Linux 커널의 usb: typec: wcove 드라이버에서 wcove_read_rx_buffer() 함수가 구조체 크기를 초과하여 데이터를 쓰는 버퍼 오버플로 취약점이 발견되었습니다. 악의적인 USB 파트너가 허용된 크기보다 큰 데이터를 전송할 경우, 커널 스택의 데이터를 덮어쓸 수 있는 위험이 있습니다.

💡 쉬운 설명

USB 연결 장치가 컴퓨터에 잘못된 크기의 데이터를 보내면, 컴퓨터의 중요한 메모리 영역을 침범하여 시스템을 불안정하게 만들 수 있는 문제입니다. 이를 통해 해커가 시스템 제어권을 얻으려 시도할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: usb: typec: wcove: don't write past struct pd_message in wcove_read_rx_buffer() wcove_read_rx_buffer() copies the PD RX FIFO into the caller's struct pd_message with for (i = 0; i < USBC_RXINFO_RXBYTES(info); i++) regmap_read(wcove->regmap, USBC_RX_DATA + i, msg + i); which has two problems: USBC_RXINFO_RXBYTES() is a 5-bit field (max 31) while struct pd_message is 30 bytes (__le16 header + __le32 payload[PD_MAX_PAYLOAD], packed). The byte count latched in RXINFO is the number of bytes the port partner put on the wire, so a malicious partner that transmits a 31-byte frame can drive the loop one byte past the destination if the WCOVE BMC receiver does not enforce the PD object-count limit in hardware. The existing FIXME flagged this as unverified. Independently, regmap_read() takes an unsigned int * and stores a full unsigned int at the destination. Passing the byte pointer msg + i means each iteration writes four bytes; the high three are zero (val_bits is 8) and are normally overwritten by the next iteration, but the final iteration's high bytes are not. With RXBYTES == 30 the i == 29 iteration already writes three zero bytes past msg, which sits on the IRQ thread's stack in wcove_typec_irq(). Clamp the loop to sizeof(struct pd_message) and read each register into a local before storing only its low byte, so the copy can never exceed the destination regardless of what RXINFO reports.

📍 영향받는 시스템

Linux kernel (usb: typec: wcove 드라이버 포함 버전)

⚔️ 공격 벡터

악의적인 USB Type-C 파트너 장치를 통한 데이터 전송 (Physical/Local)

🛡️ 대응 방법

커널 패치를 통해 루프 범위를 pd_message 구조체 크기로 제한하고 데이터 쓰기 방식을 수정해야 합니다.

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 최신 패치 버전인지 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel