🇰🇷 한글 설명
Linux 커널의 drm/amdkfd 구성 요소에서 get_queue_ids() 함수 호출 시 NULL 포인터 역참조 취약점이 발견되었습니다. 사용자가 num_queues를 0보다 크게 설정하고 큐 배열 포인터를 NULL로 전달할 경우, 커널이 잘못된 값을 반환하여 시스템 패닉(Kernel Panic)을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 운영체제인 리눅스에서 특정 명령을 잘못 내리면 시스템이 갑자기 멈추거나 꺼질 수 있는 오류입니다. 공격자가 의도적으로 잘못된 정보를 보내 컴퓨터를 강제로 재부팅하게 만들 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdkfd: fix NULL dereference in get_queue_ids()
When usr_queue_id_array is NULL and num_queues is non-zero,
get_queue_ids() returns NULL. The callers check only IS_ERR() on the
return value; since IS_ERR(NULL) == false the check passes, and
suspend_queues() calls q_array_invalidate() which immediately
dereferences NULL while iterating num_queues times.
Userspace can trigger this via kfd_ioctl_set_debug_trap() by supplying
num_queues > 0 with a zero queue_array_ptr, causing a kernel panic.
A NULL usr_queue_id_array with num_queues == 0 is a legitimate no-op
(q_array_invalidate never executes, and resume_queues already guards
all queue_ids dereferences behind a NULL check). Return ERR_PTR(-EINVAL)
only when num_queues is non-zero and the pointer is absent; both callers
already propagate IS_ERR() returns correctly to userspace.
(cherry picked from commit f165a82cdf503884bb1797771c61b2fcc72113d4)
📍 영향받는 시스템
Linux kernel (drm/amdkfd driver component)
⚔️ 공격 벡터
사용자 공간(Userspace)에서 kfd_ioctl_set_debug_trap() ioctl 호출을 통해 num_queues > 0 및 NULL 포인터 전달
🛡️ 대응 방법
커널 패치(commit f165a82cdf503884bb1797771c61b2fcc72113d4 적용 버전)를 적용하여 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이상인지 확인하십시오.