🇰🇷 한글 설명
Linux 커널의 xe 드라이버에서 디스플레이가 없는 상태로 시스템이 절전 모드나 종료될 때 NULL 포인터 역참조로 인해 시스템 오류(Oops)가 발생하는 취약점입니다. 디스플레이 하드웨어 존재 여부를 확인하는 과정에서 초기화되지 않은 모드 설정을 참조하여 발생합니다.
💡 쉬운 설명
컴퓨터가 화면(디스플레이)이 없는 상태에서 전원을 끄거나 절전 모드로 들어갈 때, 시스템이 잘못된 메모리 주소를 참조하여 오류가 발생하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 비정상적으로 종료될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/xe/display: fix oops in suspend/shutdown without display
The xe driver keeps track of whether to probe display, and whether
display hardware is there, using xe->info.probe_display. It gets set to
false if there's no display after intel_display_device_probe(). However,
the display may also be disabled via fuses, detected at a later time in
intel_display_device_info_runtime_init().
In this case, the xe driver does for_each_intel_crtc() on uninitialized
mode config in xe_display_flush_cleanup_work(), leading to a NULL
pointer dereference, and generally calls display code with display info
cleared.
Check for intel_display_device_present() after
intel_display_device_info_runtime_init(), and reset
xe->info.probe_display as necessary. Also do unset_display_features()
for completeness, although display runtime init has already done
that. This will need to be unified across all cases later.
Move intel_display_device_info_runtime_init() call slightly earlier,
similar to i915, to avoid a bunch of unnecessary setup for no display
cases.
Note #1: The xe driver has no business doing low level display plumbing
like for_each_intel_crtc() to begin with. It all needs to happen in
display code.
Note #2: The actual bug is present already in commit 44e694958b95
("drm/xe/display: Implement display support"), but the oops was likely
introduced later at commit ddf6492e0e50 ("drm/xe/display: Make display
suspend/resume work on discrete").
(cherry picked from commit 7c3eb9f47533220888a67266448185fd0775d4da)
📍 영향받는 시스템
Linux Kernel (xe driver가 포함된 버전)
⚔️ 공격 벡터
로컬 시스템에서 특정 하드웨어 구성(디스플레이 없음)을 가진 상태로 절전/종료 동작을 유도하여 시스템 오류 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 xe 드라이버의 디스플레이 초기화 로직 수정 적용
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전 이상인지 확인합니다.