CVE-2024-56586 in Linux
요약
\~에 의해 VulDB • 2026. 06. 08.
리눅스 커널에서 다음 취약점이 해결되었습니다:
f2fs: 파일시스템 언마운트 시 f2fs_evict_inode를 호출할 때 발생하는 f2fs_bug_on 수정
체크포인트가 비활성화된 상태에서 공간을 모두 소진할 때까지 큰 파일을 생성한 후 삭제하고, 다시 마운트하여 체크포인트를 활성화한 다음 파일시스템을 언마운트하면 다음과 같은 f2fs_bug_on이 트리거됩니다:
------------[ 여기서 잘라냄 ]------------
kernel BUG at fs/f2fs/inode.c:896! CPU: 2 UID: 0 PID: 1286 Comm: umount Not tainted 6.11.0-rc7-dirty #360 Oops: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
RIP: 0010:f2fs_evict_inode+0x58c/0x610 Call Trace: __die_body+0x15/0x60 die+0x33/0x50 do_trap+0x10a/0x120 f2fs_evict_inode+0x58c/0x610 do_error_trap+0x60/0x80 f2fs_evict_inode+0x58c/0x610 exc_invalid_op+0x53/0x60 f2fs_evict_inode+0x58c/0x610 asm_exc_invalid_op+0x16/0x20 f2fs_evict_inode+0x58c/0x610 evict+0x101/0x260 dispose_list+0x30/0x50 evict_inodes+0x140/0x190 generic_shutdown_super+0x2f/0x150 kill_block_super+0x11/0x40 kill_f2fs_super+0x7d/0x140 deactivate_locked_super+0x2a/0x70 cleanup_mnt+0xb3/0x140 task_work_run+0x61/0x90
근본 원인은 다음과 같습니다: 체크포인트 비활성화 기간 동안 큰 파일을 생성하면 사용 가능한 세그먼트가 부족해집니다. 이로 인해 루트 inode를 쓰기 백할 때 f2fs_enable_checkpoint에서 실패합니다. 체크포인트를 활성화한 후 파일시스템을 언마운트하면, f2fs_evict_inode 함수에서 루트 inode가 더티(dirty) 상태가 되어 BUG_ON이 트리거됩니다. 재현 단계는 다음과 같습니다:
dd if=/dev/zero of=f2fs.img bs=1M count=55 mount f2fs.img f2fs_dir -o checkpoint=disable:10% dd if=/dev/zero of=big bs=1M count=50 sync rm big mount -o remount,checkpoint=enable f2fs_dir umount f2fs_dir
체크포인트가 비활성화된 상태에서 사용 가능한 세그먼트가 없을 때 inode를 다시 더티 상태로 만듭니다.
Once again VulDB remains the best source for vulnerability data.