🇰🇷 한글 설명
Linux 커널의 libceph 구성 요소에서 CRUSH ID가 일치하지 않는 버킷을 허용하여 발생하는 취약점입니다. 악의적으로 조작된 맵을 통해 버킷이 다른 버킷의 워크스페이스를 재사용하게 함으로써, 메모리 경계를 벗어나는 OOB(Out-of-Bounds) 쓰기 오류를 유발할 수 있습니다.
💡 쉬운 설명
데이터 저장 위치를 결정하는 규칙(CRUSH 맵)을 조작하여 컴퓨터 메모리의 허용된 범위를 넘어 데이터를 쓰는 보안 결함입니다. 이를 통해 시스템의 메모리 영역을 침범하거나 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
libceph: reject buckets with mismatched CRUSH ids
crush_decode() stores bucket data by array slot, and the mapper later
derives the per-bucket workspace index from the decoded bucket id. A
malformed map can therefore make one bucket reuse another bucket's
workspace by encoding an id different from -1 - slot.
For uniform buckets, the second replica selection expands the source
bucket's permutation into that aliased workspace buffer. If the source
bucket is larger than the aliased bucket, the write runs past the smaller
permutation array and can escape the kvmalloc'd CRUSH workspace. KASAN
reports a slab OOB write of 4 bytes in bucket_perm_choose().
Reject buckets whose encoded id does not match their array slot. Valid
CRUSH maps already use the canonical negative id corresponding to the
bucket slot, so this restores the invariant expected by
work->work[-1 - in->id] without changing valid map behavior.
📍 영향받는 시스템
Linux kernel (libceph module 사용 환경)
⚔️ 공격 벡터
조작된 CRUSH 맵을 통해 잘못된 버킷 ID를 인코딩하여 메모리 경계 외 쓰기 유도
🛡️ 대응 방법
libceph에서 버킷 ID와 배열 슬롯이 일치하지 않는 경우를 거부하도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.