CVE-2023-53311 in Linux정보

요약

\~에 의해 VulDB • 2026. 05. 26.

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

nilfs2: iput를 통한 인노드 더티 처리 시 nilfs_root의 use-after-free 수정

nilfs2의 언마운트 과정에서 nilfs2가 nilfs_detach_log_writer()에서 라이터를 분리한 후에는 nilfs_root 구조체를 참조하는 주체가 없습니다. 기존에는 nilfs_evict_inode()가 "garbage_list"에 남아 있는 인노드가 nilfs_detach_log_writer() 종료 시 nilfs_dispose_list에 의해 해제되면 nilfs_root에 대한 use-after-free 읽기를 유발할 수 있었습니다. 이 버그는 커밋 9b5a04ac3ad9("nilfs2: nilfs_evict_inode()에서 nilfs_root의 use-after-free 버그 수정")로 수정되었습니다.

그러나 iput()에서 mark_inode_dirty_sync()가 호출되는 호출 경로에서 UAF(Use-After-Free)가 발생할 가능성이 또 다른 것으로 드러났습니다:

nilfs_detach_log_writer() nilfs_dispose_list() iput() mark_inode_dirty_sync() __mark_inode_dirty() nilfs_dirty_inode() __nilfs_mark_inode_dirty() nilfs_load_inode_block() --> nilfs_root 구조체의 UAF 유발

i_state에 I_DIRTY_TIME 플래그가 설정되고 i_nlink이 0이 아닌 경우 iput()가 최종 참조 시 mark_inode_dirty_sync()를 호출하도록 변경한 커밋 0ae45f63d4ef("vfs: lazytime 마운트 옵션 지원 추가") 이후에 이러한 상황이 발생할 수 있습니다.

이 문제는 syzbot 재현기를 사용할 때 커밋 28a65b49eb53("nilfs2: 읽기 전용으로 전환된 후 더티 데이터 쓰기 금지") 이후에 나타나지만, 해당 문제는 이전에 잠재적으로 존재했을 가능성이 있습니다.

nilfs 구조체에 "purging flag"를 추가하고, "garbage_list"를 처리하는 동안 해당 플래그를 설정하며, __nilfs_mark_inode_dirty()에서 이를 확인함으로써 이 문제를 해결합니다.

커밋 9b5a04ac3ad9("nilfs2: nilfs_evict_inode()에서 nilfs_root의 use-after-free 버그 수정")와 달리, 이 패치는 마운트 시 복구 기능을 손상시키지 않도록 ns_writer를 사용하여 작업을 건너뛸지 여부를 결정하는 데 의존하지 않습니다. nilfs_salvage_orphan_logs 루틴은 로그 라이터를 연결하기 전에 회수된 데이터의 버퍼를 더티 상태로 만드므로, ns_writer가 NULL일 때 __nilfs_mark_inode_dirty()가 작업을 건너뛰도록 변경하면 복구 쓰기가 실패할 수 있습니다. 정리 전용 플래그를 사용하는 목적은 이러한 조건을 좁히기 위함입니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Linux

예약하다

2025. 09. 16.

모더레이션

수락

항목

VDB-324499

EPSS

0.00149

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!