CVE-2026-92503 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 18.

리눅스 커널에서 다음 취약점이 해결되었습니다:

ext4: ext4_xattr_inode_cache_find()에서의 ABBA 교착 상태 수정

Syzbot/stress-ng는 ea_inode 마운트/포맷 옵션을 사용하여 동적 xattr 부하를 실행할 때 ext4에서 ABBA 교착 상태를 보고했습니다.

이 교착 상태는 실행 중인 트랜잭션과 eviction(삭제) 스레드 사이에서 발생합니다: - 작업 1 (stress-ng): 공유 mbcache_entry(ce)에 대한 참조를 보유하고 있으며, 대응하는 EA inode를 검색하기 위해 ext4_xattr_inode_cache_find() -> ext4_iget()를 호출합니다. 현재 해당 EA inode가 evicting 중이므로, ext4_iget()는 __wait_on_freeing_inode()에서 대기하며 eviction의 완료를 기다립니다. - 작업 2 (eviction 스레드): ext4_evict_ea_inode()에서 동일한 EA inode를 evicting 중입니다. mb_cache_entry_wait_unused(oe)를 호출하여 작업 1이 mbcache_entry에 대한 참조를 해제할 때까지 대기합니다.

이 교착 상태를 해결하기 위해 EXT4_IGET_NOWAIT라는 새로운 ext4_iget() 구성 플래그를 구현했습니다. 이 플래그가 설정되면 VFS의 find_inode_nowait() API를 통해 비차단 방식으로 inode를 조회합니다.

inode가 현재 evicting 중(I_FREEING 또는 I_WILL_FREE로 표시됨)이거나 생성 중인 경우(I_CREATING), 또는 VFS inode 캐시에 존재하지 않는 경우(cache miss), eviction/생성이 완료될 때까지 기다리는 대신 단순히 건너뛰고(-ENOENT 반환) ABBA 사이클을 끊습니다.

캐시 미스 시 즉시 -ENOENT를 반환하므로, 새 inode 할당이나 iget_locked() 호출이 시도되지 않아 TOCTOU(race condition) 취약점 창이 완전히 제거됩니다.

반환된 inode가 I_NEW인 경우 wait_on_new_inode()를 통해 초기화가 완료될 때까지 대기합니다. 초기화에 실패하고 다른 스레드에서의 I/O 읽기 오류 등으로 인해 wait_on_new_inode() 호출 중 inode가 unhashed 상태가 되면, 참조를 안전하게 해제하고 -ENOENT를 반환합니다. 이 unhashed 체크는 모든 캐시 히트 경로에서 조건 없이 수행되어 동적 초기화 실패를 적절히 처리합니다.

마지막으로 표준 유효성 검사 checks(is_bad_inode, EXT4_EA_INODE_FL, file_acl 및 xattr 플래그 포함)가 check_igot_inode() 내에서 정상적으로 실행되어 VFS 계층의 안전성을 완전히 보장합니다.

ext4_xattr_inode_cache_find()에서 새로운 EXT4_IGET_NOWAIT 플래그를 사용하여 ext4_iget()를 호출하여 비차단 캐시 검색을 수행합니다.

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

Linux

예약하다

2026. 09. 16.

모더레이션

수락

항목

VDB-407010

EPSS

0.00000

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!