🇰🇷 한글 설명
리눅스 커널의 BPF(Berkeley Packet Filter) 구성 요소에서 bpf_sock_addr 구조체의 패딩 영역에 대한 접근을 적절히 검증하지 못하는 취약점이 발견되었습니다. 이로 인해 검증기(verifier) 오류가 발생할 수 있으며, 패치에서는 sock_addr_is_valid_access 함수를 통해 필드 접근을 명시적으로 확인하도록 수정되었습니다.
💡 쉬운 설명
컴퓨터 운영체제의 핵심인 리눅스 커널에서 데이터의 빈 공간(패딩)을 잘못 건드려 오류가 발생하는 문제입니다. 이 오류를 이용해 시스템의 보안 검사 과정을 방해하거나 문제를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Explicitly check accesses to bpf_sock_addr
Syzkaller found a kernel warning on the following sock_addr program:
0: r0 = 0
1: r2 = *(u32 *)(r1 +60)
2: exit
which triggers:
verifier bug: error during ctx access conversion (0)
This is happening because offset 60 in bpf_sock_addr corresponds to an
implicit padding of 4 bytes, right after msg_src_ip4. Access to this
padding isn't rejected in sock_addr_is_valid_access and it thus later
fails to convert the access.
This patch fixes it by explicitly checking the various fields of
bpf_sock_addr in sock_addr_is_valid_access.
I checked the other ctx structures and is_valid_access functions and
didn't find any other similar cases. Other cases of (properly handled)
padding are covered in new tests in a subsequent patch.
📍 영향받는 시스템
bpf_sock_addr 구조체를 사용하는 리눅스 커널 버전
⚔️ 공격 벡터
BPF 프로그램을 통해 bpf_sock_addr 구조체의 허용되지 않은 패딩 영역(offset 60)에 접근 시도
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인