🇰🇷 한글 설명
Linux 커널 4.9.7 이전 버전의 VideoCore DRM 드라이버 vc4_gem.c 파일에서 vc4_get_bcl 함수가 오버플로우 감지 시 errno를 설정하지 않아, 로컬 사용자가 VC4_SUBMIT_CL ioctl 호출을 통해 포인터 역참조 오류를 유발할 수 있습니다. 이로 인해 시스템 거부 서비스(DoS) 공격이 가능합니다.
💡 쉬운 설명
라즈베리파이 등 VideoCore GPU를 사용하는 시스템의 리눅스 커널에서 메모리 오버플로우 처리 오류가 있어 로컬 사용자가 시스템을 다운시킬 수 있습니다. 특정 ioctl 명령어로 부정확한 메모리 접근을 유발하여 커널 패닉을 일으킵니다.
🇺🇸 원문 (English)
The vc4_get_bcl function in drivers/gpu/drm/vc4/vc4_gem.c in the VideoCore DRM driver in the Linux kernel before 4.9.7 does not set an errno value upon certain overflow detections, which allows local users to cause a denial of service (incorrect pointer dereference and OOPS) via inconsistent size values in a VC4_SUBMIT_CL ioctl call.
📍 영향받는 시스템
Linux kernel < 4.9.7 (vc4 드라이버 탑재 시스템: Raspberry Pi, ARM 기반 임베디드 보드)
⚔️ 공격 벡터
로컬 사용자가 VC4_SUBMIT_CL ioctl 호출 시 불일치하는 크기값(size values)을 전달하여 오버플로우 감지 후 errno 미설정 상태에서 포인터 역참조 오류 유발
🛡️ 대응 방법
Linux 커널을 4.9.7 이상 버전으로 업그레이드하거나 vc4_gem.c 패치 적용 (vc4_get_bcl 함수의 errno 설정 로직 추가)
🔧 검증 코드
위 명령어로 커널 버전이 표시되고 'Vulnerable'이 출력되면 취약한 버전이며, 그 외의 경우 패치된 버전일 가능성이 있습니다.
uname -r | grep -E '^4\.[0-8]\.|^4\.9\.[0-6]' && echo 'Vulnerable' || echo 'May be patched'