🇰🇷 한글 설명
Linux 커널의 ntfs3 파일 시스템 드라이버에서 발생하는 취약점으로, UpdateResidentValue 함수 내에서 속성 오프셋 계산 시 언더플로우가 발생할 수 있습니다. 이로 인해 잘못된 데이터 크기가 계산되어 MFT 레코드 할당 범위를 초과하는 약 4GiB의 메모리 영역을 읽게 되는 정보 유출 또는 시스템 오류 가능성이 있습니다.
💡 쉬운 설명
NTFS 형식의 저장 장치를 읽을 때 계산 오류가 발생하여, 실제 데이터보다 훨씬 큰 영역을 읽으려고 시도하는 문제입니다. 이로 인해 시스템이 멈추거나 잘못된 데이터가 노출될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fs/ntfs3: bound attr_off in UpdateResidentValue against data_off
In do_action()'s UpdateResidentValue case (fslog.c:3307),
lrh->attr_off and lrh->redo_len come from the on-disk LRH.
When they satisfy aoff + dlen < attr->res.data_off, the
assignment
attr->res.data_size = cpu_to_le32(aoff + dlen - data_off);
underflows to ~4 GiB (e.g. 0xFFFFFFF9 when aoff=0x10, dlen=1,
data_off=0x18). Subsequent code that reads attr->res.data_size
to walk the resident attribute payload would then read up to
4 GiB past the 1024-byte MFT record allocation.
The existing mi_enum_attr() defense in fs/ntfs3/record.c:287
catches the corrupted data_size on the next attribute walk
and fails the mount, but only on the path that walks all
attributes. A read site that picks an attribute by name and
reads its data_size without re-validating is not covered.
Validate aoff against data_off and asize at the source.
Reproduced under UML+KASAN on mainline 8d90b09e6741 via
pr_warn-only probe: with aoff=0x10 and data_off=0x18, the
post-assignment data_size is 0xfffffff9 (mount then fails
at -22 from mi_enum_attr).
[
[email protected]: clang-formatted the changes]
📍 영향받는 시스템
Linux kernel (ntfs3 driver 사용 환경)
⚔️ 공격 벡터
조작된 NTFS 파일 시스템 이미지 또는 디스크를 시스템에 마운트하여 발생
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.