🇰🇷 한글 설명
Linux 커널의 ntfs3 파일시스템에서 메타데이터 불일치로 인한 무한 루프 발생 취약점입니다. 손상된 NTFS 이미지의 속성 헤더가 빈 실행 목록을 나타내지만 디렉토리 항목이 실제 데이터 참조를 시도할 때 발생하며, 반복문이 진행되지 않아 시스템 거부 상태(DoS)를 유발합니다.
💡 쉬운 설명
손상된 NTFS 디스크 이미지가 Linux 시스템을 무한 루프에 빠뜨려 컴퓨터를 멈추게 할 수 있습니다. 파일시스템 메타데이터 검증 강화로 방지됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fs: ntfs3: fix infinite loop in attr_load_runs_range on inconsistent metadata
We found an infinite loop bug in the ntfs3 file system that can lead to a
Denial-of-Service (DoS) condition.
A malformed NTFS image can cause an infinite loop when an attribute header
indicates an empty run list, while directory entries reference it as
containing actual data. In NTFS, setting evcn=-1 with svcn=0 is a valid way
to represent an empty run list, and run_unpack() correctly handles this by
checking if evcn + 1 equals svcn and returning early without parsing any run
data. However, this creates a problem when there is metadata inconsistency,
where the attribute header claims to be empty (evcn=-1) but the caller
expects to read actual data. When run_unpack() immediately returns success
upon seeing this condition, it leaves the runs_tree uninitialized with
run->runs as a NULL. The calling function attr_load_runs_range() assumes
that a successful return means that the runs were loaded and sets clen to 0,
expecting the next run_lookup_entry() call to succeed. Because runs_tree
remains uninitialized, run_lookup_entry() continues to fail, and the loop
increments vcn by zero (vcn += 0), leading to an infinite loop.
This patch adds a retry counter to detect when run_lookup_entry() fails
consecutively after attr_load_runs_vcn(). If the run is still not found on
the second attempt, it indicates corrupted metadata and returns -EINVAL,
preventing the Denial-of-Service (DoS) vulnerability.
📍 영향받는 시스템
Linux kernel ntfs3 filesystem (패치 적용 전 모든 버전)
⚔️ 공격 벡터
손상된 메타데이터를 가진 NTFS 디스크 이미지나 USB를 시스템에 마운트시키기
🛡️ 대응 방법
패치된 Linux 커널로 업데이트하거나 필요 없을 시 ntfs3 모듈 비활성화
🔧 검증 코드
커널 버전을 확인하고 ntfs3 모듈이 로드되어 있는지 확인합니다. ntfs3가 있으면 커널 패치 버전을 검증하고 취약한 버전은 즉시 업데이트하세요.
uname -r && lsmod | grep ntfs3 || echo 'ntfs3 not loaded'