🇰🇷 한글 설명
Linux 커널의 memblock_phys_alloc_range() 함수가 메모리 할당 실패 시 반환값을 검증하지 않아 발생하는 취약점입니다. CONFIG_PHYSICAL_START=0x100000 설정에서 4MiB 미만의 연속 메모리만 있을 때 커널 크래시가 발생합니다.
💡 쉬운 설명
리눅스 커널이 메모리를 할당할 때 성공/실패를 확인하지 않아 시스템이 비정상 종료될 수 있습니다. 특정 커널 설정에서 충분한 메모리가 부족하면 커널이 먹통이 됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
x86/mm: Check return value from memblock_phys_alloc_range()
At least with CONFIG_PHYSICAL_START=0x100000, if there is < 4 MiB of
contiguous free memory available at this point, the kernel will crash
and burn because memblock_phys_alloc_range() returns 0 on failure,
which leads memblock_phys_free() to throw the first 4 MiB of physical
memory to the wolves.
At a minimum it should fail gracefully with a meaningful diagnostic,
but in fact everything seems to work fine without the weird reserve
allocation.
📍 영향받는 시스템
CONFIG_PHYSICAL_START=0x100000으로 설정된 Linux kernel
⚔️ 공격 벡터
커널 부팅 단계에서 메모리 부족 조건 시 자동 트리거 (특정 메모리 구성 필요)
🛡️ 대응 방법
최신 Linux kernel 패치 적용 또는 memblock_phys_alloc_range() 반환값 검증 코드 추가
🔧 검증 코드
커널 설정 파일에서 CONFIG_PHYSICAL_START 값을 확인하고 0x100000으로 설정되었는지 확인합니다. 설정된 경우 최신 패치 적용 필요.
grep 'CONFIG_PHYSICAL_START' /boot/config-$(uname -r) 2>/dev/null | grep -v '^#'