🇰🇷 한글 설명
Linux 커널의 amd/display 드라이버에서 GPU 리셋 시 DC 스트림 처리 과정 중 이중 해제(Double Free) 취약점이 발견되었습니다. 이 문제는 GPU 리셋 시 백업된 상태의 링크 인코더 할당 정보를 해제하는 과정에서 발생하며, 최종적으로 NULL 포인터 역참조를 유발할 수 있습니다.
💡 쉬운 설명
그래픽 카드(GPU)를 초기화하는 과정에서 컴퓨터가 이미 삭제한 메모리 정보를 다시 삭제하려고 시도하면서 오류가 발생하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 충돌이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amd/display: Fix double free during GPU reset on DC streams
[Why]
The issue only occurs during the GPU reset code path.
We first backup the current state prior to commiting 0 streams
internally from DM to DC. This state backup contains valid link
encoder assignments.
DC will clear the link encoder assignments as part of current state
(but not the backup, since it was a copied before the commit) and
free the extra stream reference it held.
DC requires that the link encoder assignments remain cleared/invalid
prior to commiting. Since the backup still has valid assignments we
call the interface post reset to clear them. This routine also
releases the extra reference that the link encoder interface held -
resulting in a double free (and eventually a NULL pointer dereference).
[How]
We'll have to do a full DC commit anyway after GPU reset because
the stream count previously went to 0.
We don't need to retain the assignment that we had backed up, so
just copy off of the now clean current state assignment after the
reset has occcurred with the new link_enc_cfg_copy() interface.
📍 영향받는 시스템
AMD GPU를 사용하는 Linux 커널 시스템 (drm/amd/display 드라이버 포함 버전)
⚔️ 공격 벡터
로컬 공격자가 특정 GPU 리셋 시나리오를 유도하여 시스템 충돌 또는 권한 상승을 시도할 수 있음
🛡️ 대응 방법
AMD 디스플레이 드라이버의 수정 사항이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 배포판 보안 공지를 통해 확인