🇰🇷 한글 설명
Linux 커널의 F2FS 파일 시스템에서 __destroy_extent_node() 함수가 FI_NO_EXTENT 플래그를 설정할 때 가장 큰 익스텐트의 길이를 0으로 초기화하지 않아 발생하는 문제입니다. 이로 인해 캐시된 익스텐트 정보가 최신 상태를 유지하지 못하고 손상될 수 있습니다.
💡 쉬운 설명
파일 시스템이 데이터를 저장하는 방식에서 정보가 제대로 지워지지 않아 데이터 관리 정보가 꼬이는 문제입니다. 이로 인해 파일 시스템 오류가 발생하거나 데이터 무결성에 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
f2fs: fix incorrect FI_NO_EXTENT handling in __destroy_extent_node()
When __destroy_extent_node() sets the inode flag FI_NO_EXTENT, it does
not reset the length of the largest extent to 0 and update the inode
folio. Since modifications to the extent tree are disallowed afterward,
the cached largest extent may become stale. This can trigger the
following error in xfstests generic/388:
F2FS-fs (dm-0): sanity_check_extent_cache: inode (ino=1761) extent info [220057, 57, 6] is incorrect, run fsck to fix
In the f2fs_drop_inode path, __destroy_extent_node() does not need to
guarantee that et->node_cnt is 0, because concurrency with writeback
is expected in this path, and writeback may update the extent cache.
This patch reverts commit ed78aeebef05 ("f2fs: fix node_cnt race between
extent node destroy and writeback"), and remove the unnecessary zero
check of et->node_cnt.
📍 영향받는 시스템
Linux kernel (F2FS 파일 시스템을 사용하는 시스템)
⚔️ 공격 벡터
로컬 공격자가 파일 시스템의 익스텐트 구조를 조작하여 파일 시스템 오류를 유도하거나 무결성을 해칠 수 있음
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.