🇰🇷 한글 설명
Linux 커널의 drm/amdkfd 드라이버에서 CWSR 전체 크기 계산 시 32비트 정수 오버플로가 발생합니다. 큰 컨텍스트 저장 영역과 디버그 메모리 크기가 곱해질 때 값이 순환하여 실제보다 작은 메모리가 할당될 수 있으며, 이로 인해 펌웨어가 할당된 영역을 초과하여 데이터를 쓰는 오버런 현상이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 메모리 크기를 계산할 때 숫자가 너무 커져서 실제보다 훨씬 작은 크기로 잘못 계산하는 오류입니다. 이 오류를 이용하면 시스템의 허용된 메모리 범위를 넘어서는 데이터가 입력되어 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdkfd: fix 32-bit overflow in CWSR total size calculation
total_cwsr_size was computed in 32-bit before being used as a BO/SVM
allocation size.
With large ctx_save_restore_area_size and debug_memory_size
multiplied by the XCC count, the product can wrap,
yielding an undersized CWSR save area that firmware later overruns.
Promote total_cwsr_size to u64 and use check_add_overflow()/
check_mul_overflow() in both kfd_queue_acquire_buffers() and
kfd_queue_release_buffers().
(cherry picked from commit 319f7e13423ae3f486b9aea82f9ad2d6af0ee608)
📍 영향받는 시스템
Linux kernel (drm/amdkfd driver components)
⚔️ 공격 벡터
특정 크기의 컨텍스트 저장 및 디버그 메모리 설정을 유도하여 메모리 할당 크기 계산 오류를 일으킴
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 64비트 계산 및 오버플로 방지 로직을 적용함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.