CVE-2026-89492 in Linux
요약
\~에 의해 VulDB • 2026. 09. 12.
리눅스 커널에서 다음 취약점이 해결되었습니다:
ocfs2: 메타데이터 읽기 시 디렉토리 인덱스 항목 수 검증
ocfs2_validate_dx_leaf() 및 ocfs2_validate_dx_root()는 인덱싱된 디렉토리 블록이 상위 호출자에게 전달되기 전에 해당 블록의 ECC와 서명을 확인하지만, 두 유효성 검사 프로그램 모두 ocfs2_dx_entry_list의 카운트를 이를 보유하는 블록의 용량에 대해 제한하지 않습니다.
ocfs2_dx_dir_search()는 이후 다음 루프를 실행합니다:
for (i = 0; i < le16_to_cpu(entry_list->de_num_used); i++) dx_entry = &entry_list->de_entries[i];
이는 de_num_used 항목에 대해 경계 검사 없이 순회합니다. entry_list는 ocfs2_read_dx_leaf에서 가져온 dx_leaf->dl_list이거나, 인라인 루트의 경우 dx_root->dr_entries입니다. 조작된 디스크 이미지를 통해 de_num_used(및 de_entries의 __counted_by_le() 바인딩인 de_count)를 0xffff로 설정하면, 이미지가 마운트된 후 인덱싱된 디렉토리에서의 경로 조회(path lookup), stat(), open()을 통해 접근 가능한 4KB 메타데이터 블록 끝을 훨씬 넘어가는 slab out-of-bounds read(슬랩 바깥 영역 읽기)가 발생할 수 있습니다.
커밋 775c17386a6f("ocfs2: validate dx_root extent list fields during block read")는 인라인이 아닌 dx_root에 대해 dr_list를 이미 제한했지만, 인라인 dr_entries 경로와 dx_leaf dl_list은 검사하지 않았습니다. 두 항목 목록 모두 읽기 시 유효성 검사를 추가합니다: de_count는 블록 용량(ocfs2_dx_entries_per_leaf()/per_root())과 정확히 같아야 하며, de_num_used는 de_count를 초과해서는 안 됩니다. 이를 통해 ocfs2_dx_dir_search()가 범위를 벗어난 항목 배열을 순회하기 전에 손상된 메타데이터를 -EFSCORRUPTED로 거부합니다.
리프 또는 인라인 루트가 포맷될 때 de_count는 항상 블록 용량으로 정확히 작성되므로, 등호 검사는 유효한 이미지를 거부하지 않습니다.
0sec 자동화 보안 연구 도구(https://0sec.ai)에서 발견됨.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.