🇰🇷 한글 설명
Linux 커널의 drm/virtio 드라이버에서 virtio_gpu_dma_fence_wait() 함수 실행 중 오류가 발생할 경우 dma_fence 참조 횟수(refcount)가 해제되지 않는 메모리 누수 취약점이 발견되었습니다. dma_fence_unwrap_for_each() 루프 내부에서 조기 반환이 발생할 때 참조 카운트를 감소시키는 dma_fence_put() 호출이 누락되어 발생합니다.
💡 쉬운 설명
컴퓨터의 그래픽 작업을 관리하는 과정에서 오류가 생기면 사용했던 메모리 자원을 제대로 돌려주지 않고 계속 붙잡고 있는 문제가 있습니다. 이 문제가 반복되면 시스템의 메모리가 점차 부족해져 성능 저하나 시스템 불안정을 초래할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/virtio: fix dma_fence refcount leak on error in virtio_gpu_dma_fence_wait()
dma_fence_unwrap_for_each() internally calls dma_fence_unwrap_first()
which does cursor->chain = dma_fence_get(head), taking an extra
reference. On normal loop completion, dma_fence_unwrap_next()
releases this via dma_fence_chain_walk() -> dma_fence_put().
When virtio_gpu_do_fence_wait() fails and the function returns early
from inside the loop, the cursor->chain reference is never released.
This is the only caller in the entire kernel that does an early return
inside dma_fence_unwrap_for_each.
Add dma_fence_put(itr.chain) before the early return.
📍 영향받는 시스템
Linux kernel (drm/virtio 관련 모듈을 사용하는 시스템)
⚔️ 공격 벡터
로컬 공격자가 특정 그래픽 작업(virtio-gpu)을 유도하여 메모리 누수를 발생시킴
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.