🔍 CVE-2026-97496

7.1
CVSS Score
HIGH
2026-09-24
2026-10-03 11:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 drm/amdkfd 구성 요소에서 get_wave_state() 함수가 MQD에서 읽어온 값을 검증 없이 신뢰하여 발생하는 Out-of-Bounds 메모리 노출 취약점입니다. 공격자가 제어 가능한 값을 통해 copy_to_user() 함수가 비정상적으로 큰 범위를 읽게 함으로써 커널 메모리 정보를 유출할 수 있습니다.

💡 쉬운 설명

그래픽 카드 관련 소프트웨어의 허점을 이용해 컴퓨터의 중요한 비밀 정보가 담긴 메모리 영역을 몰래 훔쳐볼 수 있는 문제입니다. 공격자가 조작된 데이터를 보내면 시스템이 허용된 범위보다 훨씬 많은 데이터를 외부로 내보내게 됩니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: drm/amdkfd: Fix OOB memory exposure in get_wave_state() The get_wave_state() function for v9 trusts cp_hqd_cntl_stack_size and cp_hqd_cntl_stack_offset values read directly from the MQD, which are written by GPU microcode and fully attacker-controlled on the CRIU-restore path (via AMDKFD_IOC_RESTORE_PROCESS with H3). this leads to an unbounded copy_to_user() that can leak adjacent GTT/kernel memory. If offset > size, integer underflow produces a ~4 GiB read length, if size is set to 1 MiB against a 4 KiB allocation, we leak 1 MiB of adjacent kernel memory (other queues' MQDs, ring buffers, KASLR pointers). Fix by clamping both cp_hqd_cntl_stack_size to the actual allocated buffer size (q->ctl_stack_size) and cp_hqd_cntl_stack_offset to the clamped size before performing arithmetic and copy_to_user(). This ensures we never read beyond the allocated kernel BO regardless of attacker-supplied MQD field values.

📍 영향받는 시스템

Linux kernel (drm/amdkfd driver components)

⚔️ 공격 벡터

CRIU-restore 경로(AMDKFD_IOC_RESTORE_PROCESS)를 통해 조작된 MQD 값을 전달하여 메모리 유출 유도

🛡️ 대응 방법

커널 패치를 적용하여 cp_hqd_cntl_stack_size와 offset 값을 실제 할당된 버퍼 크기 내로 제한(Clamping)해야 함

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 보안 패치 버전인지 배포판의 보안 공지를 통해 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H

💻 영향받는 소프트웨어

NVIDIA Cloud Gaming Guest Driver for Linux