🇰🇷 한글 설명
Linux 커널의 BPF 컴파일러에서 소스 레지스터와 대상 레지스터가 동일할 때(rX += rX) 레지스터 값의 변화량을 잘못 추적하는 취약점이 발견되었습니다. 이로 인해 검증기(Verifier)와 실제 실행 시점의 값이 일치하지 않는 불일치 문제가 발생할 수 있습니다.
💡 쉬운 설명
프로그램이 계산을 수행할 때 컴퓨터가 원래 값과 바뀐 값을 헷갈려 하는 오류입니다. 이 오류를 이용하면 보안 검사를 우회하여 시스템에 해로운 동작을 수행할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix linked reg delta tracking when src_reg == dst_reg
Consider the case of rX += rX where src_reg and dst_reg are pointers to
the same bpf_reg_state in adjust_reg_min_max_vals(). The latter first
modifies the dst_reg in-place, and later in the delta tracking, the
subsequent is_reg_const(src_reg)/reg_const_value(src_reg) reads the
post-{add,sub} value instead of the original source.
This is problematic since it sets an incorrect delta, which sync_linked_regs()
then propagates to linked registers, thus creating a verifier-vs-runtime
mismatch. Fix it by just skipping this corner case.
📍 영향받는 시스템
Linux Kernel (BPF 기능이 활성화된 버전)
⚔️ 공격 벡터
조작된 BPF 프로그램을 로드하여 커널 검증기의 논리적 오류를 유도하고 권한 상승 시도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인