CVE-2026-89782 in Linux정보

요약

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

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

fs/ntfs3: U16_MAX 엔트리 수를 초과하는 리스타트 테이블 확장을 거부함

$LogFile 재생 중 log_replay()는 로그 레코드 헤더에서 가져온 transact_id로 트랜잭션 테이블을 인덱싱합니다. check_log_rec()은 transact_id가 0이 아니며 적절히 정렬되어 있는지만 검증할 뿐, 그 크기는 확인하지 않으므로, 조작된 이미지(arbitrarily large index를 요청하는)는 임의로 큰 인덱스를 요청할 수 있습니다.

alloc_rsttbl_from_idx()는 extend_rsttbl()을 통해 해당 인덱스를 커버하기 위해 테이블을 확장하며, 이 함수는 새로운 엔트리 개수를 init_rsttbl()에 전달합니다:

rt = init_rsttbl(esize, used + add);

used + add는 u32로 계산되지만 init_rsttbl()은 u16를 인자로 받으며, 해당 카운트는 struct RESTART_TABLE에서 __le16으로 저장됩니다. used + add가 U16_MAX를 초과하면 절단(truncated)되고, init_rsttbl()은 필요한 인덱스보다 훨씬 작은 테이블을 할당합니다. 이후 alloc_rsttbl_from_idx()는 원래의(절단되지 않은) 오프셋에서 역참조 및 쓰기 작업을 수행하는데, 이는 할당한 영역을 벗어난 접근(out-of-bounds access)이며, 조작된 NTFS 이미지를 마운트함으로써 도달 가능합니다.

BUG: KASAN: use-after-free in alloc_rsttbl_from_idx (fs/ntfs3/fslog.c:950) Read of size 4 at addr ffff8880327ffff8 by task exploit alloc_rsttbl_from_idx (fs/ntfs3/fslog.c:950) log_replay (fs/ntfs3/fslog.c:4562) ntfs_loadlog_and_replay (fs/ntfs3/fsntfs.c:324) ntfs_fill_super (fs/ntfs3/super.c:1393) get_tree_bdev_flags vfs_get_tree path_mount __x64_sys_mount

리스타트 테이블은 그 __le16 카운트에 의해 U16_MAX 엔트리 수로 제한되므로, 더 큰 확장 요청은 유효하지 않은 입력입니다. extend_rsttbl()에서 이를 거부합니다. 모든 호출자는 이미 NULL 반환을 처리하고 있습니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!