🇰🇷 한글 설명
Linux 커널의 drm/vc4 드라이버에서 GPU 행(hang) 상태 저장 시 할당된 BO 배열이 상태 해제 함수에서 kfree()로 정리되지 않아 발생하는 메모리 누수 취약점입니다. 반복적인 GPU 행 상태 발생 시 커널 메모리가 점진적으로 누적되어 DoS 상태를 유발할 수 있습니다.
💡 쉬운 설명
Raspberry Pi 등 VC4 GPU 드라이버를 사용하는 시스템에서 비디오카드 오류 상태를 저장할 때 메모리를 할당하지만 정리하지 않아 메모리가 계속 소모됩니다. 오류가 반복되면 시스템이 점점 느려집니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/vc4: Fix memory leak of BO array in hang state
The hang state's BO array is allocated separately with kzalloc() in
vc4_save_hang_state() but never freed in vc4_free_hang_state(). Add the
missing kfree() for the BO array before freeing the hang state struct.
📍 영향받는 시스템
Broadcom VC4 GPU 사용 ARM 기반 Linux 시스템 (Raspberry Pi 시리즈, 기타 BCM2835/BCM2836+ 칩셋 보드)
⚔️ 공격 벡터
로컬 사용자가 GPU 연산 애플리케이션을 반복 실행하여 의도적으로 GPU 행 상태 발생 유도
🛡️ 대응 방법
Linux 커널을 패치된 버전으로 업데이트 (vc4_free_hang_state에 kfree() 추가된 버전)
🔧 검증 코드
커널 모듈이 로드된 경우 vc4_free_hang_state 함수 존재 확인, 패치 상태는 커널 소스 코드의 drm/vc4/vc4_drv.c 파일에서 kfree 호출 확인으로 검증
strings /lib/modules/$(uname -r)/kernel/drivers/gpu/drm/vc4/*.ko 2>/dev/null | grep -c 'vc4_free_hang_state' || uname -r