🇰🇷 한글 설명
Linux 커널의 evdev_pass_values() 함수에서 input_event 구조체가 완전히 초기화되지 않아 발생하는 정보 유출 취약점입니다. 특정 아키텍처에서 구조체의 패딩(padding) 영역이 초기화되지 않은 채 사용자 공간으로 복사되어 커널 스택의 민감한 메모리 데이터가 노출될 수 있습니다.
💡 쉬운 설명
컴퓨터 메모리에서 데이터를 전달할 때, 실제 데이터가 아닌 빈 공간(패딩)에 남아있던 중요한 정보가 함께 새어나가는 문제입니다. 이로 인해 해커가 시스템의 민감한 정보를 엿볼 수 있는 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Input: evdev - fix information leak in evdev_pass_values()
In evdev_pass_values(), the input_event structure is allocated on the
kernel stack and populated field-by-field. However, it is never fully
initialized. On architectures where struct input_event contains explicit
or implicit padding (such as the 32-bit __pad field on SPARC64), these
padding bytes are left uninitialized.
When this event structure is subsequently passed to the client buffer
and later copied to userspace, the uninitialized padding bytes leak
kernel stack memory, potentially exposing sensitive information.
Similar issues exist in __evdev_queue_syn_dropped and __pass_event.
Fix this by explicitly zeroing the entire event structure with memset()
before populating its fields. This ensures all padding bytes are cleared
before the data crosses the security boundary.
📍 영향받는 시스템
Linux kernel (evdev 관련 모듈을 사용하는 시스템)
⚔️ 공격 벡터
로컬 공격자가 evdev를 통해 커널 스택의 잔류 데이터를 읽어내는 정보 유출 공격
🛡️ 대응 방법
커널 패치를 적용하여 input_event 구조체 생성 시 memset()을 통해 모든 패딩 영역을 0으로 초기화해야 함
🔧 검증 코드
현재 커널 버전과 evdev 모듈 로드 여부를 확인하여 최신 보안 패치가 적용된 커널인지 확인합니다.
uname -a && grep -i 'evdev' /proc/modules 2>/dev/null