🔍 CVE-2026-64351

5.5
CVSS Score
MEDIUM
2026-07-25
2026-09-03 16:03
✅ 완료

🇰🇷 한글 설명

Linux 커널의 kalmia USB 드라이버에서 kalmia_rx_fixup() 함수가 수신 프레임 길이를 계산할 때 정수 언더플로우가 발생할 수 있는 취약점입니다. 이로 인해 잘못된 길이 값이 계산되어 메모리 경계를 벗어난 읽기(Out-of-bounds read)가 발생할 수 있습니다.

💡 쉬운 설명

USB 장치가 아주 짧은 데이터를 보낼 때 시스템이 데이터 길이를 잘못 계산하여 메모리의 엉뚱한 부분을 읽어버리는 문제입니다. 이로 인해 시스템 정보가 유출되거나 오류가 발생할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: net: usb: kalmia: bound RX frame length in kalmia_rx_fixup() kalmia_rx_fixup() computes usb_packet_length = skb->len - (2 * KALMIA_HEADER_LENGTH) as a u16, guarded only by a pre-loop check that skb->len is at least KALMIA_HEADER_LENGTH, which is 6. A device can deliver a short bulk-IN frame with skb->len in the 6 to 11 range, or leave a short trailing remainder on a later loop iteration. Either case underflows usb_packet_length to about 65530. That bypasses the usb_packet_length < ether_packet_length truncation path. The device-supplied ether_packet_length, a le16 up to 65535 read from header_start[2], then drives a memcmp() and the following skb_trim() and skb_pull() past the end of the rx buffer. The rx buffer is hard_mtu * 10, which is 14000 bytes. That is an out of bounds read. Require both the start and end framing headers to be present before subtracting them, on every loop iteration.

📍 영향받는 시스템

Linux kernel (kalmia USB driver 포함 버전)

⚔️ 공격 벡터

악의적으로 조작된 짧은 길이를 가진 USB bulk-IN 프레임을 전송하여 발생

🛡️ 대응 방법

커널 패치를 적용하여 kalmia_rx_fixup() 함수 내 프레임 길이 검증 로직을 수정해야 함

🔧 검증 코드

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

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel