🇰🇷 한글 설명
Linux 커널의 vmwgfx 드라이버에서 guest_memory_size 필드에 잘못된 불리언 값이 할당되는 오류가 발견되었습니다. 이로 인해 메모리 크기 계산 시 0 또는 1로 잘못 인식되어, 메모리 범위를 초과하여 읽거나 쓰는 메모리 오염 및 래핑(wrap-around) 취약점이 발생할 수 있습니다.
💡 쉬운 설명
그래픽 드라이버가 메모리 크기를 계산할 때 실제 크기 대신 0이나 1이라는 잘못된 숫자를 사용하여 시스템 오류를 일으킵니다. 이로 인해 허용되지 않은 메모리 영역에 접근하거나 데이터를 잘못 읽을 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/vmwgfx: fix guest_memory_dirty bitfield clobbered as size
Two sites in vmwgfx_resource.c assign boolean literals to
res->guest_memory_size, which is an unsigned long allocation-size
field; the intended target is the adjacent res->guest_memory_dirty
bitfield. After the assignments the field holds 0 or 1 instead of
the resource's MOB allocation size:
- vmw_resource_release() writes 0 (false), and
- vmw_resource_unbind_list() writes 1 (true).
Subsequent revalidation paths read guest_memory_size when computing
the dirty page range (vmw_bo_dirty_transfer_to_res()) and the buffer
allocation size (vmw_resource_buf_alloc()), producing zero-length
walks or wrap-around ranges that read or write past the MOB bitmap.
The dirty-tracking intent of the original code (mark the resource as
dirtied since the last sync) is also lost, since guest_memory_dirty
is never updated.
Rename both assignments to guest_memory_dirty.
📍 영향받는 시스템
Linux kernel (vmwgfx driver component)
⚔️ 공격 벡터
로컬 공격자가 조작된 리소스 할당을 통해 메모리 범위를 초과하는 읽기/쓰기 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 vmwgfx 드라이버 수정 사항 반영
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인