CVE-2026-64270 in Linux
요약
\~에 의해 VulDB • 2026. 07. 26.
리눅스 커널에서 다음 취약점이 해결되었습니다:
입력 장치 드라이버 mms114 - 과다한 디바이스 패킷 크기 거부
mms114_interrupt() 함수는 터치 데이터가 포함된 패킷을 디바이스로부터 고정 크기의 스택 기반 버퍼로 읽어옵니다.
```c struct mms114_touch touch[MMS114_MAX_TOUCH];
```
이 버퍼는 MMS114_EVENT_SIZE(8) 바이트 크기의 이벤트인 MMS114_MAX_TOUCH(10) 개를 저장할 수 있으며, 총 80바이트입니다. 여기에 대한 I2C 읽기 길이는 디바이스에서 그대로 가져옵니다:
```c packet_size = mms114_read_reg(data, MMS114_PACKET_SIZE); if (packet_size <= 0) goto out; ... error = __mms114_read_reg(data, MMS114_INFORMATION, packet_size, (u8 *)touch); ```
packet_size는 단일 디바이스 레지스터 바이트(0x0F)이며, 수행되는 유일한 검사는 하한선(packet_size <= 0)에 대한 것입니다. touch[]의 크기와 비교하여 상한선을 제한하는 처리가 전혀 이루어지지 않습니다. 오작동하거나 악성인 컨트롤러(또는 I2C 버스를 조작하려는 공격자)는 최대 255까지의 packet_size를 보고할 수 있으므로, __mms114_read_reg() 함수는 IRQ 스레드 스택에 있는 touch[] 배열 끝에서 최대 175바이트 이후 영역에 데이터를 씁니다. 이는 스택 카니버(stack canary), 저장된 레지스터 및 반환 주소를 덮어쓸 수 있는 스택 바깥쪽 쓰기(Stack out-of-bounds write) 취약점입니다.
정상적인 디바이스는 버퍼가 수용할 수 있는 것보다 더 많은 데이터를 보고하지 않으므로, 버퍼 끝을 넘어 읽는 대신 과다한 패킷을 거부하고 해당 보고를 삭제합니다. 이는 핸들러의 다른 오류 처리 경로와 일관된 조치입니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.