🇰🇷 한글 설명
Linux 커널의 mms114 터치 드라이버에서 발생하는 스택 기반 버퍼 오버플로 취약점입니다. 장치가 보고하는 패킷 크기가 고정된 스택 버퍼 크기를 검증하지 않고 그대로 읽어 들임으로써, 악의적인 장치가 큰 크기를 보고할 경우 스택 메모리를 덮어쓸 수 있습니다.
💡 쉬운 설명
터치스크린 장치가 실제 크기보다 더 많은 데이터를 보내겠다고 속이면, 컴퓨터의 중요한 메모리 영역이 망가질 수 있는 문제입니다. 이를 통해 해커가 컴퓨터의 제어권을 뺏을 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Input: mms114 - reject an oversized device packet size
mms114_interrupt() reads a packet of touch data from the device into a
fixed-size on-stack buffer
struct mms114_touch touch[MMS114_MAX_TOUCH];
which holds MMS114_MAX_TOUCH (10) events of MMS114_EVENT_SIZE (8) bytes,
i.e. 80 bytes. The length of the I2C read into it is taken verbatim from
the device:
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 is a single device register byte (0x0F) and the only check
is the lower bound packet_size <= 0; it is never bounded against the
size of touch[]. A malfunctioning, malicious or counterfeit controller
(or an attacker tampering with the I2C bus) can report a packet_size of
up to 255, so __mms114_read_reg() writes up to 175 bytes past the end of
touch[] on the IRQ-thread stack: a stack out-of-bounds write that can
overwrite the stack canary, saved registers and the return address.
A well-formed device never reports more than the buffer holds, so reject
an oversized packet and drop the report, consistent with the handler's
other error paths, rather than reading past the buffer.
📍 영향받는 시스템
mms114 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
I2C 버스를 통해 조작된 패킷 크기를 전달하는 악의적인 또는 결함이 있는 하드웨어 컨트롤러를 통한 공격
🛡️ 대응 방법
패킷 크기가 버퍼 크기를 초과하는지 검증하는 로직이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 패치된 버전인지 보안 공지(CVE-2026-64270)와 대조하여 확인합니다.