🇰🇷 한글 설명
Linux 커널의 NTFS 드라이버에서 ntfs_external_attr_find() 함수가 속성 목록(attribute-list)의 다음 항목을 검증할 때 경계 검사를 불충분하게 수행하는 취약점입니다. 공격자가 조작된 NTFS 파일 시스템의 $ATTRIBUTE_LIST를 사용하면, 할당된 버퍼 범위를 벗어난 메모리를 읽는 Slab Out-of-Bounds Read가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 NTFS 형식의 저장 장치를 읽을 때, 데이터의 끝을 제대로 확인하지 않고 그 너머의 메모리 영역을 읽어버리는 오류입니다. 이를 통해 공격자는 시스템의 민감한 정보를 훔쳐볼 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ntfs: bound the look-ahead attribute-list entry in ntfs_external_attr_find()
When resolving an attribute lookup with a non-zero @lowest_vcn,
ntfs_external_attr_find() peeks at the next $ATTRIBUTE_LIST entry to
decide whether to keep searching, but bounds that not-yet-validated
entry only with "(u8 *)next_al_entry + 6 < al_end" (which proves just
bytes 0..6 are in range) and "(u8 *)next_al_entry + length <= al_end"
with an attacker-controlled, non-8-aligned length. It then reads
next_al_entry->lowest_vcn (an __le64 at offset 8) and the name at
next_al_entry->name_offset, both of which can lie past al_end -- the
exact end of the kvmalloc'd attribute-list buffer (allocated at the
on-disk attr_list_size, no rounding). A crafted on-disk $ATTRIBUTE_LIST
whose last entry sits a few bytes before al_end therefore yields a slab
out-of-bounds read when the inode is read.
Validate the look-ahead entry with ntfs_attr_list_entry_is_valid() (added
in patch 1/3) before dereferencing lowest_vcn and the name, so the same
fixed-header, length and name bounds the main attribute-list walk uses now
guard this read too.
📍 영향받는 시스템
Linux kernel (NTFS driver 사용 시스템)
⚔️ 공격 벡터
조작된 $ATTRIBUTE_LIST 구조를 가진 NTFS 파일 시스템을 마운트하거나 해당 파일 시스템의 inode를 읽음
🛡️ 대응 방법
ntfs_attr_list_entry_is_valid() 검증 로직이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 패치된 최신 보안 업데이트 버전인지 확인