CVE-2026-72192 in Linux
요약
\~에 의해 VulDB • 2026. 08. 16.
리눅스 커널에서 다음 취약점이 해결되었습니다:
ntfs3: indx_insert_into_root 호출 전 $INDEX_ROOT의 to_move 변수에 경계 검사 적용
indx_insert_into_root() 함수는 가득 찬 상주(resident) 상태의 $INDEX_ROOT를 $INDEX_ALLOCATION로 승격시키고, 마지막을 제외한 모든 상주 루트 엔트리들을 hdr_insert_head()를 통해 새로 할당된 INDEX_BUFFER로 복사합니다. 소스 바이트 수인 'to_move' 값은 디스크에 저장된 상주 엔트리의 크기를 합산하여 계산되며, 이는 root->index_block_size( indx->index_bits를 통해 결정됨)에서 파생되는 목적지 버퍼 크기에는 독립적입니다.
유효하고 가득 찬 상주 루트를 유지한 채로, 루트가 populated 된 후 root->index_block_size 값을 512로 축소하는 조작된 NTFS 이미지는 hdr_insert_head()가 indx_new()가 반환한 kmalloc(1u << indx->index_bits) 할당 영역의 끝을 넘어 공격자가 제어할 수 있는 상주 엔트리 바이트들을 memcpy하도록 만듭니다. 목적지가 512바이트이고, 마지막을 제외한 비마지막(non-last) 엔트리의 총합이 560바이트인 경우, memcpy는 120바이트를 오버런하며 이어지는 memmove로 인해 가장 높은 쓰기 오프셋은 할당 영역 끝에서 136바이트 더 멀리까지 확장됩니다. 오버플로우된 바이트들은 kmemdup을 통해 디스크 엔트리들의 직접 복사본이므로 공격자가 완전히 제어할 수 있습니다.
이 쓰기는 마운트된 조작된 NTFS 이미지에 대해 비권한(open(O_CREAT)) 접근으로 도달 가능합니다: 상주 루트가 이미 가득 찬 디렉토리에서 충분히 긴 create 연산 한 번만 수행하면 루트 승격(copy)이 강제 실행되고 취약점이 트리거됩니다.
이는 kmalloc(index_block_size) 할당 영역의 끝을 넘어 120~136바이트를 쓰는 공격자 제어 콘텐츠가 포함된 통제된 범위 외(out-of-bounds) 쓰기입니다. 이는 경계가 있는 인접 힙 손상(primitive)이며, 임의 주소 쓰기는 아닙니다. 성공적인 익스플로잇은 주변 슬랩(slab) 레이아웃에 따라 명명된 대상 객체로의 전이가 필요합니다.
싱크 지점에서의 복사를 거부합니다. 목적지의 INDEX_HDR에는 이미 hdr_total(새 버퍼의 페이로드 용량)과 hdr_used(indx_new()가 설치한 터미널 END 엔트리에 의해 이미 소비된 바이트 수)이 보고되어 있습니다. hdr_insert_head() 호출 전, to_move 값이 남은 페이로드에 맞는지 확인합니다. 불일치 시 -EINVAL로 실패하고 파일시스템을 디스크 상의 일관성 오류가 감지되었음을 나타내는 상태로 표시하며, 이는 해당 함수 내 주변 검증 로직과 동일한 동작입니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.