🇰🇷 한글 설명
Linux 커널의 bpf 구성 요소에서 64k 페이지 크기를 사용하는 aarch64 커널 환경 시 소프트 락업(softlockup) 및 세그멘테이션 오류가 발생합니다. arena_map_free 함수가 페이지 정렬되지 않은 주소를 처리할 때 발생하는 문제로, GUARD_SZ 값을 조정하여 페이지 정렬을 보장함으로써 해결되었습니다.
💡 쉬운 설명
특정 설정의 리눅스 시스템에서 메모리를 관리하는 과정 중 계산 오류로 인해 컴퓨터가 멈추거나 프로그램이 강제 종료될 수 있는 문제입니다. 메모리 주소를 정렬하는 방식을 수정하여 시스템이 안정적으로 작동하도록 개선되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix softlockup in arena_map_free on 64k page kernel
On an aarch64 kernel with CONFIG_PAGE_SIZE_64KB=y,
arena_htab tests cause a segmentation fault and soft lockup.
The same failure is not observed with 4k pages on aarch64.
It turns out arena_map_free() is calling
apply_to_existing_page_range() with the address returned by
bpf_arena_get_kern_vm_start(). If this address is not page-aligned
the code ends up calling apply_to_pte_range() with that unaligned
address causing soft lockup.
Fix it by round up GUARD_SZ to PAGE_SIZE << 1 so that the
division by 2 in bpf_arena_get_kern_vm_start() returns
a page-aligned value.
📍 영향받는 시스템
aarch64 아키텍처에서 CONFIG_PAGE_SIZE_64KB=y 설정이 활성화된 Linux 커널
⚔️ 공격 벡터
로컬 공격자가 특수하게 조작된 BPF(Berkeley Packet Filter) 프로그램을 실행하여 시스템 가용성을 침해(DoS)할 수 있음
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력 결과에서 커널 버전과 CONFIG_PAGE_SIZE_64KB=y 설정 여부를 확인하여 취약 환경인지 판단
uname -a && grep CONFIG_PAGE_SIZE /boot/config-$(uname -r) 2>/dev/null