🇰🇷 한글 설명
Linux 커널의 BPF 인터프리터가 특정 명령어(gotox insn)를 인식하지 못해 발생하는 취약점입니다. insn_array 맵을 사용하는 프로그램에서 인터프리터로 폴백(fallback)될 경우 커널의 BUG_ON()이 호출되어 시스템이 중단될 수 있습니다.
💡 쉬운 설명
리눅스 운영체제의 특정 기능을 처리하는 과정에서 잘못된 명령어를 만나면 시스템이 갑자기 멈추거나 오류를 일으킬 수 있는 문제입니다. 이를 방지하기 위해 시스템이 안전한 방식으로만 명령어를 실행하도록 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Disallow interpreter fallback for gotox insn
The interpreter does not recognize the BPF_JMP|BPF_JA|BPF_X insn, which
is used for insn_array map. Thereafter, it would hit the BUG_ON() in
___bpf_prog_run() at run time.
[ 2.563726] BPF interpreter: unknown opcode 0d (imm: 0x0)
[ 2.564557] ------------[ cut here ]------------
[ 2.565206] kernel BUG at kernel/bpf/core.c:2349!
[ 2.565882] Oops: invalid opcode: 0000 [#1] SMP PTI
Set jit_required as true when insn_array map is used in the prog in
order to disallow interpreter fallback for gotox insn in
core.c::__bpf_prog_select_runtime().
📍 영향받는 시스템
Linux kernel (insn_array map을 사용하는 BPF 프로그램 실행 환경)
⚔️ 공격 벡터
특수하게 조작된 BPF 프로그램을 로드하여 커널 인터프리터를 강제로 실행시킴으로써 커널 패닉 유도
🛡️ 대응 방법
커널을 최신 보안 패치가 적용된 버전으로 업데이트하거나, insn_array 사용 시 jit_required 설정을 true로 강제함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인합니다.