🇰🇷 한글 설명
Linux 커널의 nios2 아키텍처에서 CONFIG_FLATMEM 설정 시 memblock.current_limit이 적절히 설정되지 않는 취약점이 발견되었습니다. 이로 인해 max_low_pfn 값이 실제 사용 가능한 DRAM 범위를 초과할 수 있으며, 결과적으로 커널 페이징 오류 및 커널 패닉을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터가 사용할 수 있는 메모리 범위를 잘못 계산하여 시스템이 엉뚱한 메모리 주소에 접근하려고 시도하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 블루스크린과 같은 커널 오류가 발생하며 재부팅될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nios2: ensure that memblock.current_limit is set when setting pfn limits
On nios2, with CONFIG_FLATMEM set, the kernel relies on
memblock_get_current_limit() to determine the limits of mem_map, in
particular for max_low_pfn.
Unfortunately, memblock.current_limit is only default initialized to
MEMBLOCK_ALLOC_ANYWHERE at this point of the bootup, potentially leading
to situations where max_low_pfn can erroneously exceed the value of
max_pfn and, thus, the valid range of available DRAM.
This can in turn cause kernel-level paging failures, e.g.:
[ 76.900000] Unable to handle kernel paging request at virtual address 20303000
[ 76.900000] ea = c0080890, ra = c000462c, cause = 14
[ 76.900000] Kernel panic - not syncing: Oops
[ 76.900000] ---[ end Kernel panic - not syncing: Oops ]---
This patch fixes this by pre-calculating memblock.current_limit
based on the upper limits of the available memory ranges via
adjust_lowmem_bounds, a simplified version of the equivalent
implementation within the arm architecture.
📍 영향받는 시스템
CONFIG_FLATMEM이 설정된 nios2 아키텍처 기반 Linux 커널
⚔️ 공격 벡터
로컬 공격자가 시스템 부팅 과정의 메모리 구성 오류를 이용해 커널 패닉을 유도할 수 있음
🛡️ 대응 방법
adjust_lowmem_bounds를 통해 memblock.current_limit을 올바르게 계산하도록 수정된 최신 Linux 커널 패치 적용
🔧 검증 코드
명령어 결과에 nios2 아키텍처가 나타나면 해당 취약점의 잠재적 영향권에 있는 시스템입니다.