🔍 CVE-2026-64014

7.1
CVSS Score
HIGH
2026-07-19
2026-10-24 20:10
✅ 완료

🇰🇷 한글 설명

Linux 커널의 usbtouchscreen 드라이버에서 NEXIO 장치의 데이터 길이를 검증하지 않아 발생하는 취약점입니다. 공격자가 조작된 USB 패킷을 보내면 커널 메모리의 약 64KiB 영역을 초과하여 읽을 수 있으며, 이를 통해 커널 메모리 정보가 사용자 공간으로 유출될 수 있습니다.

💡 쉬운 설명

터치스크린 장치가 가짜 데이터를 보내면 컴퓨터의 중요한 내부 정보가 밖으로 새 나갈 수 있는 결함입니다. 잘못된 데이터 길이를 입력받아 허용된 범위를 넘어선 메모리 영역까지 읽어버리는 것이 문제입니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: Input: usbtouchscreen - clamp NEXIO data_len/x_len to URB buffer size nexio_read_data() pulls data_len and x_len from a packed __be16 header in the device's interrupt packet and then walks packet->data[0..x_len) and packet->data[x_len..data_len) comparing each byte against a threshold. Both fields are 16-bit on the wire (max 65535). The existing adjustments shave at most 0x100 / 0x80 off, so the loop bound can still reach roughly 0xfeff. The URB transfer buffer for NEXIO is rept_size (1024) bytes from usb_alloc_coherent(), with the first 7 occupied by the packed header — so packet->data[] has 1017 valid bytes. read_data() callbacks are not given urb->actual_length, and nothing else bounds the walk. A device that lies about its length can get a ~64 KiB out-of-bounds read past the coherent DMA allocation. The first index whose byte exceeds NEXIO_THRESHOLD lands in begin_x / begin_y and from there into the reported touch coordinates, so adjacent kernel memory contents leak to userspace as ABS_X / ABS_Y events. Far enough out, the read can also hit an unmapped page and fault. Fix this all by clamping data_len to the buffer's data[] capacity and x_len to data_len.

📍 영향받는 시스템

Linux kernel (usbtouchscreen driver using NEXIO device)

⚔️ 공격 벡터

조작된 데이터 길이를 포함한 악성 USB 인터럽트 패킷 전송

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 data_len 및 x_len에 대한 경계 검사 로직 적용

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel