🇰🇷 한글 설명
Linux 커널의 amdgpu 드라이버에서 GART 테이블 할당 시 초기화가 누락되어 발생하는 취약점입니다. GART TLB가 매핑 후 플러시되지 않아, 초기화되지 않은 가비지 데이터가 유효한 PTE로 오인되어 GPU가 잘못된 메모리 주소에 접근할 수 있습니다.
💡 쉬운 설명
그래픽 카드가 메모리를 사용할 때, 이전에 사용하던 찌꺼기 데이터가 남아 있어 보안상 위험할 수 있는 문제입니다. 이 찌꺼기 데이터 때문에 그래픽 카드가 허용되지 않은 메모리 영역을 읽거나 쓸 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdgpu: zero-initialize GART table on allocation
GART TLB is flushed after unmapping but not after mapping. Since
amdgpu_bo_create_kernel() does not zero-initialize the buffer, when a
single PTE is written the TLB may speculatively load other uninitialized
entries from the same cacheline. Those garbage entries can appear valid,
and a subsequent write to another PTE in the same cacheline may cause the
GPU to use a stale garbage PTE from the TLB.
Fix this by calling memset_io() to zero-initialize the GART table with
gart_pte_flags immediately after allocation.
Using AMDGPU_GEM_CREATE_VRAM_CLEARED, SDMA-based clear will not work
since SDMA needs GART to be initialized to work.
(cherry picked from commit d9af8263b82b6eaa60c5718e0c6631c5037e4b24)
📍 영향받는 시스템
Linux kernel (amdgpu driver 사용 시스템)
⚔️ 공격 벡터
로컬 공격자가 GPU 메모리 매핑 과정을 조작하여 권한이 없는 메모리 영역에 접근하거나 데이터를 유출함
🛡️ 대응 방법
amdgpu 드라이버가 포함된 Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.