🇰🇷 한글 설명
Linux 커널의 drm/vmwgfx 드라이버에서 셰이더 크기와 오프셋의 경계를 확인하는 과정 중 정수 오버플로 취약점이 발견되었습니다. 사용자가 입력한 오프셋 값이 매우 클 경우, 덧셈 연산 시 값이 되돌아가는(wrap) 현상이 발생하여 유효성 검사를 우회할 수 있습니다. 이로 인해 비정상적인 오프셋이 호스트 SVGA 명령으로 전달될 수 있습니다.
💡 쉬운 설명
프로그램이 숫자를 더할 때 너무 큰 숫자가 들어오면 계산 결과가 갑자기 아주 작은 숫자로 변하는 오류가 있습니다. 공격자는 이 점을 이용해 시스템의 허용 범위를 벗어난 잘못된 명령을 내릴 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/vmwgfx: use check_add_overflow for shader size+offset bound
vmw_shader_define() validates the user-supplied shader window against
its backing buffer with
(u64)buffer->tbo.base.size < (u64)size + (u64)offset
drm_vmw_shader_create_arg::offset is __u64 in the uapi; when it is
near U64_MAX the unsigned addition wraps and the resulting tiny value
passes the check. The unbounded offset is then stored in
res->guest_memory_offset and forwarded to host SVGA shader-create
commands.
Use check_add_overflow() to detect the wrap and compare the resulting
endpoint against the buffer size.
📍 영향받는 시스템
Linux kernel (drm/vmwgfx 드라이버를 사용하는 VMware 가상 환경 시스템)
⚔️ 공격 벡터
사용자가 조작된 매우 큰 오프셋 값을 포함한 셰이더 생성 요청을 커널에 전달
🛡️ 대응 방법
check_add_overflow() 함수를 사용하여 정수 오버플로를 방지하도록 커널 패치 적용
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 수정된 최신 패치 버전인지 확인