🇰🇷 한글 설명
Linux 커널의 drm/amd/display 드라이버에서 발생한 취약점으로, dm_update_crtc_state() 함수 내 skip_modeset 경로에서 new_stream 포인터를 해제한 후 NULL로 설정하지 않아 발생합니다. 이로 인해 오류 발생 시 동일한 포인터를 다시 해제하는 이중 해제(Double Release) 및 사용 후 해제(Use-After-Free) 문제가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터 화면을 제어하는 프로그램이 이미 사용이 끝난 메모리 주소를 지우지 않고 계속 붙잡고 있다가, 실수로 두 번 지우려고 시도하면서 시스템 오류를 일으키는 문제입니다. 이 과정에서 해커가 시스템 권한을 탈취하거나 프로그램을 강제로 종료시킬 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amd/display: set new_stream to NULL after release
In dm_update_crtc_state(), the skip_modeset path releases new_stream
via dc_stream_release() but does not set the pointer to NULL.
If a later error (e.g., color management failure) triggers the fail
label, the error path calls dc_stream_release() again on the same
dangling pointer, causing a double release and potential use-after-free.
Fix this by setting new_stream to NULL after the initial release.
(cherry picked from commit 99f3af19073b3ddbfd96e789124cce12c4277b28)
📍 영향받는 시스템
AMD 그래픽 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
특정 디스플레이 설정 변경 중 오류를 유도하여 메모리 관리 오류를 발생시킴
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 dc_stream_release() 호출 후 포인터를 NULL로 초기화하도록 수정해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전(commit 99f3af19073b3ddbfd96e789124cce12c4277b28 포함 버전)인지 확인합니다.