🇰🇷 한글 설명
Linux 커널의 ntfs3 파일 시스템에서 len 값이 0일 때 초기화되지 않은 lcn(Logical Cluster Number) 값이 사용되는 취약점이 발견되었습니다. run_lookup_entry() 함수가 실패하여 len이 0이 될 때, attr_data_get_block_locked()의 로직 오류로 인해 lcn이 설정되기 전 호출되어 발생합니다. 이 문제는 ntfs_iomap_begin() 내에서 clen의 0 값 체크를 lcn 업데이트 이전으로 이동하여 해결되었습니다.
💡 쉬운 설명
NTFS 형식의 저장 장치를 사용할 때, 특정 상황에서 컴퓨터가 아직 정해지지 않은 메모리 주소 값을 잘못 읽어 들여 오류가 발생할 수 있는 문제입니다. 이로 인해 시스템이 불안정해지거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fs/ntfs3: prevent uninitialized lcn caused by zero len
syzbot reported a uninit-value in ntfs_iomap_begin [1].
Since runs was not touched yet, run_lookup_entry() immediately fails
and returns false, which makes the value of "*len" 0.
Simultaneously, the new value and err value are also 0, causing the
logic in attr_data_get_block_locked() to jump directly to ok, ultimately
resulting in *lcn being triggered before it is set [1].
In ntfs_iomap_begin(), the check for a 0 value in clen is moved forward
to before updating lcn to avoid this [1].
[1]
BUG: KMSAN: uninit-value in ntfs_iomap_begin+0x8c0/0x1460 fs/ntfs3/inode.c:825
ntfs_iomap_begin+0x8c0/0x1460 fs/ntfs3/inode.c:825
iomap_iter+0x9b7/0x1540 fs/iomap/iter.c:110
Local variable lcn created at:
ntfs_iomap_begin+0x15d/0x1460 fs/ntfs3/inode.c:786
📍 영향받는 시스템
Linux kernel (ntfs3 driver 사용 시)
⚔️ 공격 벡터
로컬 공격자가 조작된 NTFS 파일 시스템을 마운트하여 커널 메모리 오류를 유도할 수 있음
🛡️ 대응 방법
ntfs3 취약점이 패치된 최신 버전의 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.