CVE-2026-89908 in Linux
요약
\~에 의해 VulDB • 2026. 09. 17.
리눅스 커널에서 다음 취약점이 해결되었습니다:
LoongArch: KVM: KVM_MR_FLAGS_ONLY 시 memslot arch flags 보존
kvm_arch_prepare_memory_region()는 new->arch.flags, 즉 메모리 슬롯이 KVM_MEM_HUGEPAGE_CAPABLE인지 아니면 KVM_MEM_HUGEPAGE_INCAPABLE인지를 계산할 때 KVM_MR_CREATE 및 KVM_MR_MOVE에 대해서만 수행하며, 그 외의 모든 변경 사항에는 조기에 반환합니다. 그러나 제네릭 코드는 모든 변경 사항마다 0으로 초기화된 memslot을 할당하고 old->arch를 복사하지 않으므로, KVM_MR_FLAGS_ONLY 업데이트(예: 라이브 마이그레이션을 위한 KVM_MEM_LOG_DIRTY_PAGES 토글) 이후 활성 memslot의 arch.flags는 0이 됩니다.
두 플래그가 모두 해제된 상태에서는 fault_supports_huge_mapping()이 HVA 범위에 대한 정렬 검사로 분기하게 되며, 이는 더 이상 GPA와 HVA가 PMD 내에서 동일한 오프셋을 갖는지 검증하지 않습니다. GPA/HVA 오프셋 불일치 때문에 KVM_MEM_HUGEPAGE_INCAPABLE으로 표시된 memslot이 읽기 결함 발생 시 PMD 엔트리로 매핑될 수 있으며, kvm_map_page()는 gfn과 pfn을 독립적으로 정렬하므로 게스트가 잘못된 호스트 페이지에 접근하게 됩니다. 이는 정확히 검사 위에 있는 주석에서 설명한 "d -> f, e -> g" 사례입니다.
해당 경우 GPA, HVA 및 크기가 변경되지 않음이 보장되므로 KVM_MR_FLAGS_ONLY의 경우 arch flags를 기존 memslot에서 이전합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.