CVE-2026-80781 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 04.

리눅스 커널에서 다음 취약점이 해결되었습니다:

HID: core: hid_set_field() 내 field->usage의 OOB(범위 밖) 읽기 수정

hid_set_field() 함수는 오프셋을 제한하는 검사문 이전에 field->usage + offset를 hid_dump_input()에 전달합니다.

hid_dump_input(field->report->device, field->usage + offset, value);

if (offset >= field->report_count) {
hid_err(...); return -1; }

CONFIG_DEBUG_FS 설정 하에서 hid_dump_input()은 해당 포인터를 역참조하며, buf = hid_resolv_usage(usage->hid, NULL)로 할당됩니다. usage[] 배열은 hid_register_field() 내에서 hid_field와 인라인으로 할당되며 field->maxusage개의 항목을 보유합니다. 따라서 그 너머의 오프셋에 접근하면 kvzalloc()로 할당한 메모리 영역 끝을 넘어 이웃한 객체를 읽게 됩니다. 만약 검사문이 먼저 실행되었다면, offset < report_count <= maxusage 조건이 이미 포인터를 배열 내부로 제한했을 것입니다.

현재 호출자는 이러한 오프셋을 제공합니다. picolcd_fb_send_tile() 함수는 hid_set_field(report->field[0], 11 + i, ...) (i = 0..31) 호출 전에 report->maxfield만 검증하므로, 그 오프셋은 11부터 42까지 고정되어 있으며 경계 필드(field)에 대해 결코 검사되지 않습니다. 장치가 fewer usages(더 적은 사용량)로 해당 필드를 등록할 때, 프레임버퍼의 지연 IO 작업이 타일마다 이 읽기 작업을 수행합니다. KASAN은 hid_set_field() 아래의 hid_dump_input()에서 4바이트 slab-out-of-bounds(read)를 보고하며, 동일한 부팅 로그는 나중에만 실행되는 검사문으로부터 "offset (1) exceeds report_count (1)" 메시지를 출력합니다.

hid_dump_input() 호출을 검사문 아래로 이동시킵니다. field->maxusage >= field->report_count이므로, 검사문이 역참조되기 전에 필드->usage + offset가 배열 내부에 위치함을 보장하며, 모든 호출자에 대해 유효한 경로에서의 동작은 변경하지 않습니다.

XBOW에서 발견함, Baul Lee <[email protected]>에서 분류(triage)

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Linux

예약하다

2026. 08. 26.

모더레이션

수락

항목

VDB-398928

EPSS

0.00000

출처

Do you know our Splunk app?

Download it now for free!