🇰🇷 한글 설명
Linux 커널의 arkfb 드라이버에서 사용자가 입력한 screen_size 값이 실제 화면 크기보다 클 경우 발생하는 취약점입니다. 이로 인해 memset_io() 함수 호출 시 잘못된 메모리 영역에 접근하여 커널 페이지 폴트(Page Fault) 및 시스템 충돌이 발생할 수 있습니다.
💡 쉬운 설명
사용자가 조작한 잘못된 화면 크기 정보 때문에 컴퓨터의 핵심 운영체제(커널)가 엉뚱한 메모리 공간을 건드리게 됩니다. 이 과정에서 시스템이 갑자기 멈추거나 오류가 발생하며 다운될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
video: fbdev: arkfb: Check the size of screen before memset_io()
In the function arkfb_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:
[ 659.399066] BUG: unable to handle page fault for address: ffffc90003000000
[ 659.399077] #PF: supervisor write access in kernel mode
[ 659.399079] #PF: error_code(0x0002) - not-present page
[ 659.399094] RIP: 0010:memset_orig+0x33/0xb0
[ 659.399116] Call Trace:
[ 659.399122] arkfb_set_par+0x143f/0x24c0
[ 659.399130] fb_set_var+0x604/0xeb0
[ 659.399161] do_fb_ioctl+0x234/0x670
[ 659.399189] fb_ioctl+0xdd/0x130
Fix the this by checking the value of 'screen_size' before memset_io().
📍 영향받는 시스템
Linux kernel (arkfb 드라이버를 사용하는 시스템)
⚔️ 공격 벡터
사용자 입력값을 통해 조작된 잘못된 화면 크기(screen_size) 파라미터를 ioctl을 통해 전달
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 arkfb_set_par() 내 크기 검증 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인