🇰🇷 한글 설명
리눅스 커널의 s3fb 드라이버에서 사용자 입력값에 의해 계산된 화면 크기가 실제 할당된 메모리 크기보다 클 경우 발생하는 취약점입니다. 이로 인해 memset_io() 함수 호출 시 잘못된 메모리 주소에 접근하여 커널 페이지 폴트 및 시스템 충돌이 발생할 수 있습니다.
💡 쉬운 설명
사용자가 조작한 잘못된 화면 크기 정보 때문에 컴퓨터의 핵심 시스템(커널)이 허용되지 않은 메모리 영역을 건드리게 됩니다. 이 과정에서 시스템이 갑자기 멈추거나 오류가 발생하며 다운될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
video: fbdev: s3fb: Check the size of screen before memset_io()
In the function s3fb_set_par(), the value of 'screen_size' is
calculated by the user input. If the user provides the improper value,
the value of 'screen_size' may larger than 'info->screen_size', which
may cause the following bug:
[ 54.083733] BUG: unable to handle page fault for address: ffffc90003000000
[ 54.083742] #PF: supervisor write access in kernel mode
[ 54.083744] #PF: error_code(0x0002) - not-present page
[ 54.083760] RIP: 0010:memset_orig+0x33/0xb0
[ 54.083782] Call Trace:
[ 54.083788] s3fb_set_par+0x1ec6/0x4040
[ 54.083806] fb_set_var+0x604/0xeb0
[ 54.083836] do_fb_ioctl+0x234/0x670
Fix the this by checking the value of 'screen_size' before memset_io().
📍 영향받는 시스템
s3fb 드라이버를 사용하는 리눅스 커널 버전
⚔️ 공격 벡터
사용자 입력값이 포함된 ioctl 시스템 호출을 통한 메모리 오버라이트 유도
🛡️ 대응 방법
s3fb_set_par() 함수 내에서 memset_io() 호출 전 screen_size 값을 검증하도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.