🇰🇷 한글 설명
Linux 커널의 BPF 컴파일러에서 jump 명령어가 포함된 bpf_fastcall 패턴을 잘못 재작성하는 취약점이 해결되었습니다. jump 명령어가 패턴 중간에 삽입될 경우 bpf_remove_fastcall_spills_fills() 함수가 부적절한 최적화를 수행하여 논리적 오류를 발생시킬 수 있습니다.
💡 쉬운 설명
리눅스 운영체제의 핵심 기능 중 하나인 BPF 프로그램이 코드를 최적화하는 과정에서 계산 오류를 일으킬 수 있는 버그입니다. 이 버그는 프로그램의 실행 흐름을 꼬이게 만들어 시스템 불안정성을 초래할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: don't rewrite bpf_fastcall patterns entered by a jump
mark_fastcall_pattern_for_call() must ensure that matched
"spill; call; fill" instruction series is not interrupted by a jump.
Otherwise the rewrite applied by bpf_remove_fastcall_spills_fills()
is not sound.
Record the instructions targeted by jumps in
insn_aux_data[*].jump_target when the CFG is built and use this flag
to stop growing a pattern at such an instruction. Jumps to the first
spill are fine.
Note that existing insn_aux_data[*].jmp_point field can't be reused,
as it marks subprogram return instructions.
📍 영향받는 시스템
Linux Kernel (bpf_fastcall 패턴을 사용하는 버전)
⚔️ 공격 벡터
특수하게 조작된 BPF 프로그램을 로드하여 커널의 최적화 로직을 오작동하게 유도
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 보안 업데이트 버전인지 확인