🇰🇷 한글 설명
Linux 커널의 uinput 인터페이스에서 장치 설정 시 과도하게 많은 슬롯(contact points) 요청을 허용하여 메모리 할당 실패를 유발하는 문제를 해결한 패치. 슬롯 개수를 100개로 제한하여 악의적이거나 잘못된 요청으로 인한 시스템 리소스 소진을 방지.
💡 쉬운 설명
Linux 입력 장치 인터페이스(uinput)가 터치 추적 포인트 개수를 제한하지 않아 과도한 메모리 할당을 요청받을 수 있습니다. 이를 100개로 제한하는 보안 패치입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Input: uinput - reject requests with unreasonable number of slots
When exercising uinput interface syzkaller may try setting up device
with a really large number of slots, which causes memory allocation
failure in input_mt_init_slots(). While this allocation failure is
handled properly and request is rejected, it results in syzkaller
reports. Additionally, such request may put undue burden on the
system which will try to free a lot of memory for a bogus request.
Fix it by limiting allowed number of slots to 100. This can easily
be extended if we see devices that can track more than 100 contacts.
📍 영향받는 시스템
Linux kernel (2.6.30 이상의 uinput 인터페이스 사용 커널)
⚔️ 공격 벡터
로컬 공격자가 uinput 인터페이스를 통해 비정상적으로 많은 슬롯을 요청하여 메모리 할당 실패 유발
🛡️ 대응 방법
Linux 커널을 CVE-2024-46745 패치가 적용된 버전으로 업데이트 (일반적으로 6.x 이상의 최신 커널 버전)
🔧 검증 코드
첫 번째 명령이 100 제한을 반환하거나, 커널 버전이 6.0 이상이면 패치가 적용된 상태입니다.
grep -i 'MT_MAX_SLOTS\|#define.*SLOTS.*100' /usr/include/linux/input/mt.h 2>/dev/null || uname -r | grep -E '^(6\.[0-9]+|5\.1[5-9]|5\.[2-9])'