🇰🇷 한글 설명
Linux 커널 NTFS3 파일시스템의 indx_find() 함수에서 반환 값을 검사하지 않아 발생하는 무한 루프 취약점입니다. 악의적으로 조작된 INDEX_ENTRY의 HAS_SUB_NODE 플래그와 VCN 포인터를 통해 같은 블록을 반복 읽도록 유도하여 메모리 고갈과 OOM 크래시를 야기합니다.
💡 쉬운 설명
Linux 커널의 NTFS3 파일 시스템에서 특수한 파일 구조로 인해 컴퓨터가 같은 작업을 무한 반복하게 될 수 있습니다. 이를 이용하면 메모리를 모두 소비하여 시스템을 마비시키는 거부 공격(DoS)을 수행할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fs: ntfs3: check return value of indx_find to avoid infinite loop
We found an infinite loop bug in the ntfs3 file system that can lead to a
Denial-of-Service (DoS) condition.
A malformed dentry in the ntfs3 filesystem can cause the kernel to hang
during the lookup operations. By setting the HAS_SUB_NODE flag in an
INDEX_ENTRY within a directory's INDEX_ALLOCATION block and manipulating the
VCN pointer, an attacker can cause the indx_find() function to repeatedly
read the same block, allocating 4 KB of memory each time. The kernel lacks
VCN loop detection and depth limits, causing memory exhaustion and an OOM
crash.
This patch adds a return value check for fnd_push() to prevent a memory
exhaustion vulnerability caused by infinite loops. When the index exceeds the
size of the fnd->nodes array, fnd_push() returns -EINVAL. The indx_find()
function checks this return value and stops processing, preventing further
memory allocation.
📍 영향받는 시스템
Linux kernel (NTFS3 filesystem support 활성화된 모든 버전, fnd->nodes 배열 크기 초과 시)
⚔️ 공격 벡터
악의적으로 조작된 NTFS3 파일시스템 이미지 마운트 또는 로컬 파일시스템에서 디렉토리 블록의 HAS_SUB_NODE 플래그와 VCN 포인터 조작
🛡️ 대응 방법
커널을 indx_find() 반환 값 검사 패치가 적용된 최신 버전으로 업데이트하거나 NTFS3 파일시스템 지원 비활성화
🔧 검증 코드
NTFS3_ENABLED 출력 시 커널이 NTFS3를 지원하므로 패치된 커널 버전 확인 필요, NTFS3_DISABLED 출력 시 취약점 영향 없음
grep CONFIG_NTFS3 /boot/config-$(uname -r) 2>/dev/null | grep -q 'CONFIG_NTFS3=y' && echo 'NTFS3_ENABLED' || echo 'NTFS3_DISABLED'