🇰🇷 한글 설명
Linux 커널의 BPF 검증기(verifier)가 헬퍼 함수 프로토타입의 메모리 액세스 플래그를 잘못 처리하여 발생하는 취약점입니다. 특정 헬퍼 함수에서 메모리 읽기/쓰기 권한 플래그가 누락되어 검증기가 버퍼 내용이 변경되지 않았다고 잘못 가정함으로써 최적화 오류 및 데이터 무결성 문제를 일으킬 수 있습니다.
💡 쉬운 설명
컴퓨터가 메모리 데이터를 읽고 쓸 때, 어떤 데이터가 바뀌었는지 제대로 확인하지 못해 발생하는 오류입니다. 이로 인해 프로그램이 실제 데이터와 다른 잘못된 값을 사용하여 시스템 동작에 오류가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix memory access flags in helper prototypes
After commit 37cce22dbd51 ("bpf: verifier: Refactor helper access type tracking"),
the verifier started relying on the access type flags in helper
function prototypes to perform memory access optimizations.
Currently, several helper functions utilizing ARG_PTR_TO_MEM lack the
corresponding MEM_RDONLY or MEM_WRITE flags. This omission causes the
verifier to incorrectly assume that the buffer contents are unchanged
across the helper call. Consequently, the verifier may optimize away
subsequent reads based on this wrong assumption, leading to correctness
issues.
For bpf_get_stack_proto_raw_tp, the original MEM_RDONLY was incorrect
since the helper writes to the buffer. Change it to ARG_PTR_TO_UNINIT_MEM
which correctly indicates write access to potentially uninitialized memory.
Similar issues were recently addressed for specific helpers in commit
ac44dcc788b9 ("bpf: Fix verifier assumptions of bpf_d_path's output buffer")
and commit 2eb7648558a7 ("bpf: Specify access type of bpf_sysctl_get_name args").
Fix these prototypes by adding the correct memory access flags.
📍 영향받는 시스템
Linux Kernel (BPF 기능이 활성화된 버전)
⚔️ 공격 벡터
조작된 BPF 프로그램을 로드하여 검증기의 잘못된 최적화 로직을 유도함으로써 메모리 무결성 오류 유발
🛡️ 대응 방법
최신 보안 패치가 적용된 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인