🇰🇷 한글 설명
Linux kernel 4.14.8 이하의 kernel/bpf/verifier.c가 도달 불가능한 코드를 검증 단계에서 무시하지만, JIT 컴파일러는 실제로 이를 처리하는 불일치가 발생합니다. 로컬 공격자가 이를 악용하여 악의적인 eBPF 프로그램을 로드함으로써 커널 검증을 우회하고 서비스 거부 공격을 수행할 수 있습니다.
💡 쉬운 설명
Linux 커널의 안전 검사 도구가 '실행되지 않을 코드'를 무시하지만, 실제 실행 엔진은 이를 처리하는 문제입니다. 로컬 사용자가 이를 이용해 시스템을 먹통으로 만들 수 있습니다.
🇺🇸 원문 (English)
kernel/bpf/verifier.c in the Linux kernel through 4.14.8 ignores unreachable code, even though it would still be processed by JIT compilers. This behavior, also considered an improper branch-pruning logic issue, could possibly be used by local users for denial of service.
📍 영향받는 시스템
Linux kernel 4.14.8 이하, eBPF 기능 활성화된 x86_64/ARM/PowerPC 시스템
⚔️ 공격 벡터
로컬 사용자가 도달 불가능 분기를 포함한 eBPF 프로그램을 로드하여 verifier 검증 우회 후 JIT 컴파일 시 악의적 명령 실행
🛡️ 대응 방법
Linux kernel을 4.14.9 이상으로 업그레이드하거나 커널 BPF verifier 패치 적용
🔧 검증 코드
4.14.8 이하 버전 출력 시 취약상태, 4.14.9 이상이면 패치됨
uname -r | awk -F. '{if($1==4&&$2==14&&$3<=8){print "Vulnerable"}else{print "Check version: "$0}}'