🇰🇷 한글 설명
Linux 커널의 DRM 호환성 ioctl 함수에서 사용자 제어 포인터를 배열 인덱스로 사용할 때 스펙터(Spectre) 공격으로 인한 정보 유출이 가능합니다. 함수 포인터 배열 접근 시 array_index_nospec()을 통해 추측 실행을 방지해야 합니다.
💡 쉬운 설명
Linux 그래픽 드라이버에서 공격자가 특수한 명령을 보내 CPU의 추측 실행 기능을 악용하여 메모리 정보를 유출할 수 있습니다. CPU가 잘못된 경로를 미리 실행하면서 정보가 노출되는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/ioc32: stop speculation on the drm_compat_ioctl path
The drm compat ioctl path takes a user controlled pointer, and then
dereferences it into a table of function pointers, the signature method
of spectre problems. Fix this up by calling array_index_nospec() on the
index to the function pointer list.
📍 영향받는 시스템
Linux 커널 (DRM 드라이버 포함된 모든 배포판)
⚔️ 공격 벡터
로컬 사용자가 악의적인 ioctl 호출을 통해 메모리 내용 정보 유출
🛡️ 대응 방법
Linux 커널 최신 버전으로 업데이트하여 array_index_nospec() 보호 메커니즘 적용
🔧 검증 코드
커널 버전 확인 후 보안 패치가 적용되었는지 확인. CONFIG_RETPOLINE 또는 array_index_nospec 지원 여부로 판단.
uname -r && grep -i 'drm_compat_ioctl\|array_index_nospec' /boot/config-$(uname -r) 2>/dev/null || dmesg | grep -i 'spectre'