🇰🇷 한글 설명
Linux 커널의 vt8623fb 드라이버에서 사용자 입력값으로 계산된 화면 크기가 실제 할당된 크기보다 클 경우 발생하는 취약점입니다. 이로 인해 memset_io() 함수 호출 시 잘못된 메모리 영역에 접근하여 커널 패닉이나 페이지 폴트가 발생할 수 있습니다.
💡 쉬운 설명
사용자가 조작한 잘못된 화면 크기 정보 때문에 컴퓨터의 핵심 시스템(커널)이 허용되지 않은 메모리 영역을 건드리게 됩니다. 이 과정에서 시스템이 갑자기 멈추거나 오류가 발생하며 다운될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
video: fbdev: vt8623fb: Check the size of screen before memset_io()
In the function vt8623fb_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:
[ 583.339036] BUG: unable to handle page fault for address: ffffc90005000000
[ 583.339049] #PF: supervisor write access in kernel mode
[ 583.339052] #PF: error_code(0x0002) - not-present page
[ 583.339074] RIP: 0010:memset_orig+0x33/0xb0
[ 583.339110] Call Trace:
[ 583.339118] vt8623fb_set_par+0x11cd/0x21e0
[ 583.339146] fb_set_var+0x604/0xeb0
[ 583.339181] do_fb_ioctl+0x234/0x670
[ 583.339209] fb_ioctl+0xdd/0x130
Fix the this by checking the value of 'screen_size' before memset_io().
📍 영향받는 시스템
vt8623fb 드라이버를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
사용자 입력값을 통해 조작된 화면 파라미터를 ioctl을 통해 전달하여 메모리 오버라이트 유도
🛡️ 대응 방법
vt8623fb_set_par() 함수 내에서 memset_io() 호출 전 screen_size를 검증하도록 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 보안 패치 버전인지 확인