🇰🇷 한글 설명
Linux 커널의 drm/amd/display 구성 요소에서 발생한 취약점으로, dc_process_dmub_aux_transfer_async 함수가 페이로드 길이를 적절히 검증하지 않아 스택 버퍼 오버플로우가 발생할 수 있습니다. 또한 link_index에 대한 경계 검사가 누락되어 잘못된 메모리 주소에 접근할 위험이 있습니다.
💡 쉬운 설명
컴퓨터의 그래픽 처리 과정에서 데이터 크기를 제대로 확인하지 않아, 정해진 공간보다 큰 데이터를 입력하면 시스템이 망가질 수 있는 문제입니다. 또한 잘못된 위치의 데이터를 읽으려 시도하여 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amd/display: Validate payload length and link_index in dc_process_dmub_aux_transfer_async
[Why&How]
dc_process_dmub_aux_transfer_async() copies payload->length bytes into a
16-byte stack buffer (dpaux.data[16]) guarded only by an ASSERT(), which
is a no-op in release builds. If a caller ever passes length > 16 this
results in a stack buffer overflow via memcpy.
Additionally, link_index is used to dereference dc->links[] without
bounds checking against dc->link_count, risking an out-of-bounds access.
Replace the ASSERT with a hard runtime check that returns false when
payload->length exceeds the destination buffer size, and add a bounds
check for link_index before it is used.
(cherry picked from commit ba4caa9fecdf7a38f98c878ad05a8a64148b6881)
📍 영향받는 시스템
AMD 그래픽 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
조작된 페이로드 길이를 전달하여 스택 버퍼 오버플로우 또는 경계 외 메모리 접근 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 페이로드 길이 및 인덱스 검증 로직 적용
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전 이후인지 확인