🇰🇷 한글 설명
리눅스 커널의 evdev 구성 요소에서 EVIOCGMASK 및 EVIOCSMASK ioctl 호출 시 사용자 입력 이벤트 유형 인덱스를 적절히 검증하지 않아 발생하는 취약점입니다. 공격자가 경계 검사를 우회하는 투기적 실행(Speculative Execution)을 통해 범위를 벗어난 메모리 로드를 수행할 수 있습니다.
💡 쉬운 설명
컴퓨터가 예측을 통해 작업을 빠르게 처리하는 과정에서 보안 검사를 건너뛰고 잘못된 메모리 영역을 읽을 수 있는 결함입니다. 이를 통해 공격자가 시스템의 민감한 정보를 훔쳐볼 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Input: evdev - sanitize event type index when fetching event masks
The user-supplied event type index passed to EVIOCGMASK / EVIOCSMASK
ioctls is used to index the static counts array in evdev_get_mask_cnt()
and client evmasks array in evdev_get_mask().
While the event type is architecturally bounded by EV_CNT, speculative
execution may mispredict bounds checks and perform out-of-bounds loads.
Sanitize the event type index in evdev_get_mask_cnt() branchlessly using
array_index_mask_nospec(). This clamps the index to 0 for safe array
access and forces the returned count to 0 speculatively when the index
is out of bounds.
We do not need additional array_index_nospec() calls in evdev_get_mask()
because evdev_get_mask_cnt() speculatively forces the count (and
resulting xfer_size) to 0 for out-of-bounds types, preventing any
speculative memory access to client evmasks array.
📍 영향받는 시스템
Linux Kernel (evdev 관련 ioctl을 사용하는 시스템)
⚔️ 공격 벡터
EVIOCGMASK 또는 EVIOCSMASK ioctl을 통한 조작된 이벤트 유형 인덱스 입력
🛡️ 대응 방법
array_index_mask_nospec()를 사용하여 인덱스를 검증하도록 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인합니다.