🇰🇷 한글 설명
Linux 커널의 AMD KFD(Kernel Fusion Driver) 모듈에서 CRIU(Checkpoint/Restore In Userspace) 복원 시 큐 버퍼가 올바르게 할당되지 않는 문제가 해결되었습니다. set_queue_properties_from_criu() 함수가 kfd_queue_acquire_buffers() 호출을 누락하여 버퍼 필드가 NULL로 남을 수 있었고, 이후 코드가 이를 참조하면서 문제가 발생할 수 있었습니다. 이를 수정하고 잘못된 캐스트 타입도 함께 바로잡았습니다.
💡 쉬운 설명
GPU 작업 상태를 저장했다가 다시 불러오는 과정에서 필요한 메모리 연결이 빠져 있었습니다. 이로 인해 프로그램이 비어 있는 메모리를 사용하려다 오류가 날 수 있었고, 이번 패치로 해당 연결이 추가되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdkfd: Properly acquire queue buffers in CRIU restore
When kfd_queue_acquire_buffers() was split off from
set_queue_properties_from_user(), set_queue_properties_from_criu()
was missed. Thus, set_queue_properties_from_criu() is not
filling out the buffer fields of queue_properties, which
can come up when subsequent code expects them to be non-null.
Add the proper call to kfd_queue_acquire_buffers(), and also
use the right cast types in set_queue_properties_from_criu()
(which were missed at the same time)
(cherry picked from commit 88ed96abbbe27b70193544fbc1ee06448c274714)
📍 영향받는 시스템
AMD GPU 드라이버(amdkfd)를 사용하는 CRIU 복원 기능이 포함된 Linux 커널 (패치 적용 전 버전, 정확한 버전 범위는 해당 커밋 기준 배포판 업데이트 확인 필요)
⚔️ 공격 벡터
CVSS 점수가 0.0으로 공개 평가가 없으며, 명확한 원격 공격 경로는 보고되지 않았습니다. 일반적으로 CRIU 복원 과정을 악용해 NULL 포인터 참조로 인한 서비스 거부(커널 크래시)가 가능한 수준으로 추정되나 검증되지 않았습니다.
🛡️ 대응 방법
배포판 제공 최신 커널로 업데이트하거나, 커널 소스에 해당 커밋(88ed96abbbe27b70193544fbc1ee06448c274714) 패치를 적용한 후 재부팅하세요.
🔧 검증 코드
커널 버전을 확인하고, 소스 트리에 kfd_queue_acquire_buffers 함수가 존재하는지 검사합니다; 패치된 최신 버전이면 함수 호출이 포함되어 있으며, 결과가 없거나 소스가 없으면 배포판 보안 공지로 패치 여부를 직접 확인해야 합니다.
uname -r && grep -rl 'kfd_queue_acquire_buffers' /usr/src/linux*/drivers/gpu/drm/amd/amdkfd/ 2>/dev/null | head -1