🇰🇷 한글 설명
Linux 커널의 F2FS 파일 시스템에서 SIT(Segment Information Table)와 SSA(Segment Summary Area) 간의 데이터 불일치가 발생하는 취약점입니다. 특정 상황에서 가비지 컬렉션 과정 중 SSA 블록이 최신 상태를 유지하지 못해 파일 시스템이 중단될 수 있습니다.
💡 쉬운 설명
파일 시스템이 데이터를 정리하는 과정에서 기록 정보가 서로 맞지 않아 오류가 발생하는 문제입니다. 이로 인해 파일 시스템이 갑자기 멈추거나 데이터가 손상될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
f2fs: zone: fix to avoid inconsistence in between SIT and SSA
w/ below testcase, it will cause inconsistence in between SIT and SSA.
create_null_blk 512 2 1024 1024
mkfs.f2fs -m /dev/nullb0
mount /dev/nullb0 /mnt/f2fs/
touch /mnt/f2fs/file
f2fs_io pinfile set /mnt/f2fs/file
fallocate -l 4GiB /mnt/f2fs/file
F2FS-fs (nullb0): Inconsistent segment (0) type [1, 0] in SSA and SIT
CPU: 5 UID: 0 PID: 2398 Comm: fallocate Tainted: G O 6.13.0-rc1 #84
Tainted: [O]=OOT_MODULE
Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
Call Trace:
<TASK>
dump_stack_lvl+0xb3/0xd0
dump_stack+0x14/0x20
f2fs_handle_critical_error+0x18c/0x220 [f2fs]
f2fs_stop_checkpoint+0x38/0x50 [f2fs]
do_garbage_collect+0x674/0x6e0 [f2fs]
f2fs_gc_range+0x12b/0x230 [f2fs]
f2fs_allocate_pinning_section+0x5c/0x150 [f2fs]
f2fs_expand_inode_data+0x1cc/0x3c0 [f2fs]
f2fs_fallocate+0x3c3/0x410 [f2fs]
vfs_fallocate+0x15f/0x4b0
__x64_sys_fallocate+0x4a/0x80
x64_sys_call+0x15e8/0x1b80
do_syscall_64+0x68/0x130
entry_SYSCALL_64_after_hwframe+0x67/0x6f
RIP: 0033:0x7f9dba5197ca
F2FS-fs (nullb0): Stopped filesystem due to reason: 4
The reason is f2fs_gc_range() may try to migrate block in curseg, however,
its SSA block is not uptodate due to the last summary block data is still
in cache of curseg.
In this patch, we add a condition in f2fs_gc_range() to check whether
section is opened or not, and skip block migration for opened section.
📍 영향받는 시스템
Linux kernel (F2FS 파일 시스템을 사용하는 시스템, 특히 6.13.0-rc1 이전 버전)
⚔️ 공격 벡터
로컬 사용자가 특정 파일 시스템 작업(예: fallocate 및 pinning)을 수행하여 파일 시스템 오류를 유도할 수 있음
🛡️ 대응 방법
F2FS의 SIT/SSA 불일치 문제를 해결한 최신 Linux 커널 패치를 적용하십시오.
🔧 검증 코드
출력된 커널 버전이 취약점이 수정된 최신 패치 버전인지 확인하십시오.