🇰🇷 한글 설명
Linux 커널의 amdgpu 드라이버에서 CP_GFX_SHADOW 청크의 크기를 검증하지 않아 발생하는 취약점입니다. 공격자가 잘못된 크기의 데이터를 제출할 경우 NULL 포인터 역참조가 발생하여 시스템 오류를 유발할 수 있습니다.
💡 쉬운 설명
그래픽 카드를 제어하는 프로그램이 잘못된 크기의 명령을 보낼 때, 컴퓨터가 이를 제대로 확인하지 못해 멈추거나 오류가 발생하는 문제입니다. 렌더링 권한이 있는 사용자가 이 문제를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdgpu: validate CP_GFX_SHADOW chunk size in CS pass1
Add a minimum-length check for the AMDGPU_CHUNK_ID_CP_GFX_SHADOW chunk in
amdgpu_cs_pass1(), matching the gate already present for the IB, FENCE and
BO_HANDLES chunk types.
The CP_GFX_SHADOW case previously shared a bare break with the dependency
and syncobj chunk types, which do not dereference a fixed-size struct. When
userspace submits this chunk with length_dw == 0, vmemdup_array_user() is
called with size 0 and returns ZERO_SIZE_PTR, which passes the IS_ERR()
check. amdgpu_cs_p2_shadow() then dereferences chunk->kdata as a struct
drm_amdgpu_cs_chunk_cp_gfx_shadow (reading shadow->flags), faulting on the
ZERO_SIZE_PTR and causing a NULL-pointer dereference.
This is reachable by an unprivileged process in the render group. Reject
undersized chunks with -EINVAL during pass1 so the bad submission is
rejected before pass2 ever dereferences the data.
(cherry picked from commit 7f61b2eef7415eccdb40850aca0de94211948657)
📍 영향받는 시스템
Linux kernel (amdgpu driver 포함 버전)
⚔️ 공격 벡터
렌더링 그룹 권한을 가진 비특권 사용자가 크기가 0인 CP_GFX_SHADOW 청크를 제출
🛡️ 대응 방법
amdgpu 드라이버의 최소 길이 검증 로직이 포함된 최신 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 최신 버전인지 확인
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux