🇰🇷 한글 설명
Linux 커널의 BPF(Berkeley Packet Filter) 검증기에서 BPF_JSET 명령어를 제어 흐름 그래프(CFG) 계산 시 점프 명령으로 올바르게 처리하지 못하는 취약점입니다. 이로 인해 레지스터의 생존 여부와 SCC(Strongly Connected Components) 계산이 잘못되어 보안 검증을 우회할 가능성이 있습니다.
💡 쉬운 설명
컴퓨터 프로그램이 실행되는 경로를 검사하는 과정에서 특정 조건문(비트 연산 점프)을 놓치는 오류가 발견되었습니다. 이 오류를 이용하면 보안 검사를 통과한 것처럼 속여 시스템에 해로운 코드를 실행할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: handle jset (if a & b ...) as a jump in CFG computation
BPF_JSET is a conditional jump and currently verifier.c:can_jump()
does not know about that. This can lead to incorrect live registers
and SCC computation.
E.g. in the following example:
1: r0 = 1;
2: r2 = 2;
3: if r1 & 0x7 goto +1;
4: exit;
5: r0 = r2;
6: exit;
W/o this fix insn_successors(3) will return only (4), a jump to (5)
would be missed and r2 won't be marked as alive at (3).
📍 영향받는 시스템
BPF 기능을 사용하는 Linux 커널 (패치 적용 전 버전)
⚔️ 공격 벡터
조작된 BPF 프로그램을 로드하여 커널 검증기의 논리적 오류를 유도하고 권한 상승 또는 메모리 오염 시도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 최신 패치 버전인지 확인