🇰🇷 한글 설명
Linux 커널의 amdgpu 드라이버에서 amdgpu_amdkfd_submit_ib 함수가 GPU 작업 완료를 기다리기 전에 펜스(fence) 참조를 먼저 해제하는 취약점이 발견되었습니다. 이로 인해 dma_fence_wait() 호출 전 메모리가 해제될 수 있어 Use-After-Free(UAF) 취약점이 발생할 수 있습니다.
💡 쉬운 설명
GPU 작업이 끝날 때까지 기다려야 하는 신호(펜스)를 작업이 끝나기도 전에 미리 버려버리는 문제입니다. 이로 인해 컴퓨터가 이미 사라진 메모리 정보를 참조하려다 시스템 오류나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdgpu: Fix fence put before wait in amdgpu_amdkfd_submit_ib
amdgpu_amdkfd_submit_ib() submits a GPU job and gets a fence
from amdgpu_ib_schedule(). This fence is used to wait for job
completion.
Currently, the code drops the fence reference using dma_fence_put()
before calling dma_fence_wait().
If dma_fence_put() releases the last reference, the fence may be
freed before dma_fence_wait() is called. This can lead to a
use-after-free.
Fix this by waiting on the fence first and releasing the reference
only after dma_fence_wait() completes.
Fixes the below:
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:697 amdgpu_amdkfd_submit_ib() warn: passing freed memory 'f' (line 696)
(cherry picked from commit 8b9e5259adc385b61a6590a13b82ae0ac2bd3482)
📍 영향받는 시스템
Linux kernel (amdgpu driver components)
⚔️ 공격 벡터
로컬 공격자가 특수하게 조작된 GPU 작업을 제출하여 메모리 해제 후 재사용(Use-After-Free) 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 amdgpu 드라이버 수정 사항 반영
🔧 검증 코드
현재 커널 버전을 확인하고, 해당 함수가 커널 심볼에 존재하는지 또는 패치된 커널 버전인지 확인합니다.
uname -r && grep -r "amdgpu_amdkfd_submit_ib" /proc/kallsyms 2>/dev/null