🇰🇷 한글 설명
Linux 커널의 fsverity 구성 요소에서 bpf_get_fsverity_digest() 함수가 dynptr의 메모리 안정성을 보장하지 못하는 취약점이 발견되었습니다. digest_size 값이 동시 수정될 경우 시스템 충돌이 발생할 수 있으며, 이를 방지하기 위해 검증된 값을 사용하도록 수정되었습니다.
💡 쉬운 설명
컴퓨터의 핵심 운영체제인 리눅스에서 데이터의 무결성을 확인하는 과정 중, 데이터 크기 정보가 갑자기 바뀌면 시스템이 멈출 수 있는 오류가 있었습니다. 이 오류를 수정하여 데이터가 바뀌더라도 시스템이 안전하게 작동하도록 개선했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fsverity: Fix bpf_get_fsverity_digest() dynptr assumptions
The BPF verifier and the dynptr abstraction ensure that the memory space
referenced by a dynptr remains valid. They do not, however, provide any
guarantee that the contents of the memory are stable. kfuncs are
expected to remain memory-safe even if concurrent modifications occur.
bpf_get_fsverity_digest() didn't follow that: it could crash if
arg->digest_size was concurrently modified.
Fix that by using the known-good value hash_alg->digest_size instead.
Also widen 'dynptr_sz' and 'out_digest_sz' to u64 to match the return
type of __bpf_dynptr_size(). It doesn't appear that it can actually be
more than INT_MAX currently (since __bpf_dynptr_data_rw() excludes
file-based pointers), but the correct type might as well be used.
📍 영향받는 시스템
Linux Kernel (fsverity 및 BPF 관련 기능이 활성화된 버전)
⚔️ 공격 벡터
동시성 제어 미흡을 이용한 Race Condition 공격을 통해 커널 패닉(Crash) 유도
🛡️ 대응 방법
fsverity 및 BPF 관련 패치가 적용된 최신 리눅스 커널로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.