🇰🇷 한글 설명
Linux 커널의 drm/vc4 드라이버에서 모듈 언바인드 시 Use-After-Free(UAF) 취약점이 발견되었습니다. drm_kms_helper_poll_init() 호출 후 대응하는 종료 함수가 없어, 장치가 해제된 후에도 출력 폴링 작업이 실행되어 메모리 오류를 유발합니다.
💡 쉬운 설명
그래픽 드라이버를 제거할 때 메모리 정리 작업이 제대로 이루어지지 않아 발생하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/vc4: Use managed KMS polling to fix UAF on unbind
vc4_kms_load() calls drm_kms_helper_poll_init() but the driver provides
no matching drm_kms_helper_poll_fini(). The output poll work stays
scheduled after unbind and runs on the freed drm_device:
# modprobe vc4; rmmod vc4; sleep 10
BUG: KASAN: slab-use-after-free in delayed_work_timer_fn
BUG: KASAN: slab-use-after-free in drm_client_dev_hotplug [drm]
Workqueue: events output_poll_execute [drm_kms_helper]
Allocated by task 171: __devm_drm_dev_alloc
Freed by task 262 (rmmod): drm_dev_put / component_del
Use drmm_kms_helper_poll_init() so polling is finalized with the device,
as other drivers do.
📍 영향받는 시스템
Linux kernel (drm/vc4 driver component)
⚔️ 공격 벡터
로컬 사용자가 드라이버 모듈을 로드하고 제거하는 과정을 반복하여 메모리 오류 유발
🛡️ 대응 방법
drmm_kms_helper_poll_init()를 사용하여 장치 해제 시 폴링 작업이 함께 종료되도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 최신 패치 버전인지 확인합니다.