🇰🇷 한글 설명
Linux 커널의 F2FS 파일 시스템에서 가비지 컬렉션(GC) 수행 중 inode의 F2FS_INLINE_DATA 플래그에 대한 유효성 검사가 누락되어 발생하는 취약점입니다. 공격자가 조작된 inode 데이터를 통해 커널의 f2fs_bug_on()을 유발하여 시스템 중단(Kernel BUG)을 일으킬 수 있습니다.
💡 쉬운 설명
파일 시스템이 데이터를 정리하는 과정에서 잘못된 데이터 형식을 확인하지 못해 컴퓨터 시스템이 멈추거나 오류가 발생하는 문제입니다. 악의적으로 조작된 파일 정보를 통해 시스템을 강제로 중단시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
f2fs: fix to do sanity check on F2FS_INLINE_DATA flag in inode during GC
syzbot reports a f2fs bug as below:
------------[ cut here ]------------
kernel BUG at fs/f2fs/inline.c:258!
CPU: 1 PID: 34 Comm: kworker/u8:2 Not tainted 6.9.0-rc6-syzkaller-00012-g9e4bc4bcae01 #0
RIP: 0010:f2fs_write_inline_data+0x781/0x790 fs/f2fs/inline.c:258
Call Trace:
f2fs_write_single_data_page+0xb65/0x1d60 fs/f2fs/data.c:2834
f2fs_write_cache_pages fs/f2fs/data.c:3133 [inline]
__f2fs_write_data_pages fs/f2fs/data.c:3288 [inline]
f2fs_write_data_pages+0x1efe/0x3a90 fs/f2fs/data.c:3315
do_writepages+0x35b/0x870 mm/page-writeback.c:2612
__writeback_single_inode+0x165/0x10b0 fs/fs-writeback.c:1650
writeback_sb_inodes+0x905/0x1260 fs/fs-writeback.c:1941
wb_writeback+0x457/0xce0 fs/fs-writeback.c:2117
wb_do_writeback fs/fs-writeback.c:2264 [inline]
wb_workfn+0x410/0x1090 fs/fs-writeback.c:2304
process_one_work kernel/workqueue.c:3254 [inline]
process_scheduled_works+0xa12/0x17c0 kernel/workqueue.c:3335
worker_thread+0x86d/0xd70 kernel/workqueue.c:3416
kthread+0x2f2/0x390 kernel/kthread.c:388
ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
The root cause is: inline_data inode can be fuzzed, so that there may
be valid blkaddr in its direct node, once f2fs triggers background GC
to migrate the block, it will hit f2fs_bug_on() during dirty page
writeback.
Let's add sanity check on F2FS_INLINE_DATA flag in inode during GC,
so that, it can forbid migrating inline_data inode's data block for
fixing.
📍 영향받는 시스템
Linux kernel (F2FS 파일 시스템을 사용하는 버전)
⚔️ 공격 벡터
조작된 F2FS inode 데이터를 생성하여 커널의 가비지 컬렉션 및 쓰기백(writeback) 프로세스를 유도
🛡️ 대응 방법
F2FS 가비지 컬렉션 과정에서 F2FS_INLINE_DATA 플래그에 대한 유효성 검사를 포함하도록 커널을 최신 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 안정화 버전인지 확인하십시오.