🇰🇷 한글 설명
Linux 커널의 amdgpu 디스플레이 드라이버에서 plane degamma LUT 크기를 검증하지 않아 발생하는 취약점입니다. 잘못된 크기의 LUT 데이터를 전달할 경우 0으로 나누기 오류(divide-by-zero)나 경계 외 읽기(out-of-bounds read)가 발생할 수 있습니다.
💡 쉬운 설명
그래픽 카드 설정 중 색상을 조절하는 데이터의 크기를 제대로 확인하지 않아 발생하는 문제입니다. 공격자가 조작된 데이터를 보내면 컴퓨터 시스템이 멈추거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amd/display: validate plane degamma LUT size for private color prop
Unlike the CRTC degamma path, which is guarded by
amdgpu_dm_verify_lut_sizes(), the per-plane degamma LUT size was never
validated before use. __set_dm_plane_degamma() passed the user-supplied
size straight into __is_lut_linear() and, for a non-linear LUT, into
__set_input_tf() -> __drm_lut_to_dc_gamma(), the latter always iterating
MAX_COLOR_LUT_ENTRIES entries regardless of the actual LUT size.
A malformed AMD_PLANE_DEGAMMA_LUT blob (e.g. a single entry) could thus
trigger a divide-by-zero in __is_lut_linear() or an out-of-bounds read in
__drm_lut_to_dc_gamma(). Reject any plane degamma LUT whose size does not
match MAX_COLOR_LUT_ENTRIES, mirroring the invariant the code already
asserts a few lines below (and which the CRTC path enforces).
The AMD_PLANE_DEGAMMA_LUT property is only exposed on builds with
AMD_PRIVATE_COLOR defined.
📍 영향받는 시스템
AMD_PRIVATE_COLOR 옵션이 활성화된 Linux 커널 기반 시스템
⚔️ 공격 벡터
조작된 AMD_PLANE_DEGAMMA_LUT 속성 값을 커널에 전달
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인