🇰🇷 한글 설명
Linux 커널의 OCFS2 파일 시스템에서 대용량 확장 속성(xattr)을 설정할 때 메타데이터 예약이 누락되는 취약점입니다. 파편화된 파일 시스템에서 외부 xattr 블록이 이미 존재하는 경우, lsetxattr() 호출 시 커널 패닉이 발생할 수 있습니다.
💡 쉬운 설명
파일에 특수한 정보를 저장할 때, 시스템이 필요한 저장 공간을 미리 확보하지 못해 컴퓨터가 갑자기 멈추는 문제입니다. 특히 파일이 조각나 있는 상태에서 큰 정보를 넣으려고 할 때 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ocfs2: fix missing metadata reservation for large xattrs
[BUG]
lsetxattr() panics the kernel when setting a large xattr value on a
fragmented filesystem where the file already has an external xattr
block.
[CAUSE]
ocfs2_calc_xattr_set_need() never reserves metadata blocks for a new
xattr value's extent tree when the file already has an external xattr
block. The not_found path leaves meta_add at zero, so meta_ac is NULL
when ocfs2_xattr_extend_allocation() runs.
A new value root has room for a single extent record. On a fragmented
filesystem, the allocator cannot satisfy the xattr value in one
contiguous run, so each non-contiguous run requires its own extent
record. When the value root's extent list is full and meta_ac is NULL,
ocfs2_add_clusters_in_btree() returns RESTART_META, and
ocfs2_xattr_extend_allocation() hits BUG_ON(why == RESTART_META).
[FIX]
The case where no xattr block exists yet already calls
ocfs2_extend_meta_needed(&def_xv.xv.xr_list) to reserve value tree
metadata. Add the same reservation to the case where an xattr block
already exists, making the two cases consistent.
Replace the BUG_ON with a -ENOSPC return so that if RESTART_META is
returned despite the reservation, the error propagates to userspace
instead of panicking the kernel.
📍 영향받는 시스템
Linux Kernel (OCFS2 파일 시스템을 사용하는 시스템)
⚔️ 공격 벡터
로컬 사용자가 파편화된 OCFS2 파일 시스템에서 대용량 확장 속성을 설정하여 커널 패닉 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.