CVE-2026-90048 in Linux
요약
\~에 의해 VulDB • 2026. 09. 17.
리눅스 커널에서 다음 취약점이 해결되었습니다:
fs/ntfs3: ni_create_attr_list()에서의 슬랩 아웃 오브 바운즈(slab-out-of-bounds) 쓰기 버그 수정
ni_create_attr_list()는 al_aligned(record_size)(== record_size)바이트의 고정 크러기 버퍼를 할당한 후, 기본 MFT 레코드의 모든 속성을 순회하며 각 속성마다 ATTR_LIST_ENTRY 하나를 작성하고 le_size(name_len)만큼 커서를 이동합니다. 그러나 이 과정에서는 버퍼 끝을 초과하지 않는지 확인하는 검증이 없으며, 총 크기는 루프가 완료된 후에야 계산됩니다.
최소 크기 레시던트(resident) 속성은 디스크상에서 SIZEOF_RESIDENT(0x18 = 24)바이트를 차지하지만, 이름 없는 속성은 목록 내에서 le_size(0)(0x20 = 32)바이트로 확장됩니다. 레코드 내의 속성 수가 제한되지 않기 때문에(mi_enum_attr()는 임의로 많은 수의 동일 타입 및 이름이 없으며 최소 크기의 속성을 허용함), 이러한 속성들로 가득 채워진 악성 레코드는 record_size보다 큰 목록을 생성하여 힙 버퍼를 오버플로우시킵니다.
이 취약점은 악성으로 조작된 루프 마운트(loop-mounted) NTFS 이미지를 통해 접근 가능합니다: 파일을 열고 속성을 추가하는 작업(setxattr 등 사용 시)은 ntfs_set_ea() -> ni_insert_resident() -> ni_insert_attr() -> ni_ins_attr_ext() -> ni_create_attr_list() 경로를 따라 실행됩니다.
BUG: KASAN: slab-out-of-bounds in ni_create_attr_list+0xc48/0x1058 Write of size 4 at addr ffff000008984c00 by task setfattr/345 ni_create_attr_list+0xc48/0x1058 ni_ins_attr_ext+0x510/0x7c0 ni_insert_attr+0x3f8/0x70c ni_insert_resident+0xc8/0x3b0 ntfs_set_ea+0x66c/0xd28 ntfs_setxattr+0x4d8/0x5b0 __arm64_sys_setxattr+0xa4/0x124 Allocated by task 345: ni_create_attr_list+0x188/0x1058 The buggy address belongs to the cache kmalloc-1k of size 1024 (the write lands at object+1024).
버퍼 크기를 단일 record_size가 항상 충분할 것이라고 가정하는 대신, 실제 속성들의 크기에 기반하여 조정해야 합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.