🇰🇷 한글 설명
Linux 커널의 KHO(Kernel Hotplug Optimization) 기능에서 crash kernel 이미지 처리 시 발생하는 취약점입니다. kho_fill_kimage() 함수가 crash kernel에 대해서도 무조건적으로 KHO 메타데이터를 채우려 시도하여, 제한된 예약 영역을 사용하는 crash kernel이 메모리 페이지 오류를 일으키며 충돌할 수 있습니다.
💡 쉬운 설명
시스템에 문제가 생겼을 때 작동해야 하는 비상용 커널이, 잘못된 메모리 정보 때문에 실행되자마자 오류를 일으키며 멈출 수 있는 문제입니다. 비상용 시스템이 제대로 작동하지 못하게 만드는 결함입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
kho: skip KHO for crash kernel
kho_fill_kimage() unconditionally populates the kimage with KHO
metadata for every kexec image type. When the image is a crash kernel,
this can be problematic as the crash kernel can run in a small reserved
region and the KHO scratch areas can sit outside it.
The crash kernel then faults during kho_memory_init() when it
tries phys_to_virt() on the KHO FDT address:
Unable to handle kernel paging request at virtual address xxxxxxxx
...
fdt_offset_ptr+...
fdt_check_node_offset_+...
fdt_first_property_offset+...
fdt_get_property_namelen_+...
fdt_getprop+...
kho_memory_init+...
mm_core_init+...
start_kernel+...
kho_locate_mem_hole() already skips KHO logic for KEXEC_TYPE_CRASH
images, but kho_fill_kimage() was missing the same guard. As
kho_fill_kimage() is the single point that populates image->kho.fdt
and image->kho.scratch, fixing it here is sufficient for both arm64
and x86 as the FDT and boot_params path are bailing out when these
fields are unset.
📍 영향받는 시스템
KHO 기능이 포함된 Linux kernel (arm64 및 x86 아키텍처)
⚔️ 공격 벡터
직접적인 외부 공격보다는 시스템 장애 발생 시 crash kernel이 정상적으로 로드되지 못하는 서비스 거부(DoS) 상황을 유발할 수 있음
🛡️ 대응 방법
KHO 관련 패치가 적용된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전인지 배포판 보안 공지를 통해 확인