🇰🇷 한글 설명
Linux 커널의 ext4 파일 시스템에서 마운트 과정 중 데드락(교착 상태)이 발생할 수 있는 취약점이 발견되었습니다. 특정 상황에서 inode 확장 과정이 잠금 순서의 순환 의존성을 생성하여 시스템이 멈출 수 있으며, 이를 방지하기 위해 마운트 중에는 확장을 건너뛰도록 수정되었습니다.
💡 쉬운 설명
컴퓨터가 파일을 읽고 쓰는 과정에서 서로가 서로의 작업이 끝나기를 기다리며 무한히 대기하는 상태가 발생할 수 있습니다. 이로 인해 시스템이 응답하지 않거나 멈추는 현상이 나타날 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ext4: skip extra isize expansion during mount to prevent deadlock
ext4_try_to_expand_extra_isize() is called from __ext4_mark_inode_dirty()
while holding an active jbd2 handle. During mount (!SB_ACTIVE), the
expand path may move xattrs to external blocks and release ea_inodes via
iput(). When !SB_ACTIVE, iput() calls write_inode_now() which acquires
s_writepages_rwsem, creating a circular lock dependency:
s_writepages_rwsem --> jbd2_handle --> xattr_sem --> s_writepages_rwsem
This can be triggered via:
ext4_process_orphan() -> ext4_truncate() -> ext4_mark_inode_dirty()
-> ext4_try_to_expand_extra_isize()
or:
ext4_evict_inode() -> ext4_mark_inode_dirty()
-> ext4_try_to_expand_extra_isize()
Skip expansion when !SB_ACTIVE. This is a minor loss of functionality
(extra isize won't grow for these inodes during mount), which e2fsck
can resolve later if needed.
📍 영향받는 시스템
Linux kernel (ext4 파일 시스템을 사용하는 시스템)
⚔️ 공격 벡터
특수하게 조작된 파일 시스템 구조를 마운트하거나 특정 파일 작업(truncate, evict)을 유도하여 발생
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인하십시오.