🇰🇷 한글 설명
Linux 커널의 drm/vmwgfx 드라이버에서 VKMS 초기화 실패 시 NULL 포인터에 대해 destroy_workqueue를 호출하여 커널 패닉이 발생하는 취약점입니다. 특정 조건에서 워크큐가 할당되지 않은 상태로 드라이버가 언로드될 때 발생합니다.
💡 쉬운 설명
컴퓨터의 그래픽 드라이버가 작동을 시작하다가 오류가 났을 때, 정리 작업을 하려다 오히려 시스템이 멈춰버리는 문제입니다. 준비되지 않은 상태에서 명령을 내리려다 발생하는 오류입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/vmwgfx: avoid destroy_workqueue(NULL) on vkms init failure
Two paths through vmw_vkms_init() can leave vmw->crc_workq NULL while
still leaving the rest of the driver in a state that calls
vmw_vkms_cleanup() at module unload:
1. vmw_host_get_guestinfo(GUESTINFO_VBLANK, ...) failing or
returning an oversized buffer -- the common case on hosts
without a VBLANK guestinfo entry -- early-returned before the
workqueue allocation.
2. alloc_ordered_workqueue() returning NULL on memory pressure.
vmw_vkms_cleanup() then calls destroy_workqueue(NULL), which
dereferences wq->name and panics.
Fix the first case by removing the early return: vmw->vkms_enabled
is already false on the rpci-failure path so no work will ever be
queued, and allocating the workqueue unconditionally keeps the
control flow simple. Fix the second case by guarding the cleanup
with a NULL check, since alloc_ordered_workqueue() can still fail
under low memory.
📍 영향받는 시스템
Linux kernel (drm/vmwgfx driver components)
⚔️ 공격 벡터
로컬 공격자가 메모리 압박을 유도하거나 특정 호스트 환경을 조성하여 커널 패닉(DoS) 유발 가능
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인