CVE-2026-64274 in Linux
요약
\~에 의해 VulDB • 2026. 07. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
입력 장치: goodix - 장치가 보고한 접촉 수 제한
goodix_ts_read_input_report() 함수는 장치가 보고하는 터치 포인트의 개수를 스택 상의 버퍼로 복사합니다.
u8 point_data[2 + GOODIX_MAX_CONTACT_SIZE * GOODIX_MAX_CONTACTS];
이 버퍼는 최대 GOODIX_MAX_CONTACTS(10)개의 접촉을 수용할 수 있도록 크기가 지정되어 있습니다. 유일한 런타임 체크는 ts->max_touch_num에 대해 인터럽트당 개수를 제한하지만, 이 값은 장치 구성 블록의 4비트 필드에서 그대로 가져온 것으로 결코 클램프(clamp)되지 않습니다:
ts->max_touch_num = ts->config[MAX_CONTACTS_LOC] & 0x0f;
이 니블(nibble) 값은 0~15가 될 수 있으므로, 오작동하는 장치나 악의적인/위조된 컨트롤러(또는 I2C 버스를 조작하려는 공격자)가 최대 15개의 접촉을 보고할 수 있습니다. goodix_ts_read_input_report() 함수는 이후 touch_num이 최대 15인 경우를 허용하며, 두 번째 goodix_i2c_read() 호출은 단일 접촉 헤더 뒤에 ts->contact_size * (touch_num - 1) 바이트만큼 point_data 버퍼에 기록합니다. 이는 92바이트의 버퍼를 초과하여 최대 30바이트(9바이트 보고서 형식의 경우 45바이트)까지 스택 밖 영역을 작성하는(stack out-of-bounds write) 결과를 초래합니다.
구성 블록에서 읽을 때 max_touch_num 값을 GOODIX_MAX_CONTACTS로 클램프하며, 이는 point_data[] 배열의 크기에 해당하는 접촉 수입니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.