CVE-2026-89908 in Linux信息

摘要

由 VulDB • 2026-09-17

在 Linux 内核中,已修复以下漏洞:

LoongArch: KVM: 在 KVM_MR_FLAGS_ONLY 期间保留 memslot arch flags

kvm_arch_prepare_memory_region() 仅针对 KVM_MR_CREATE 和 KVM_MR_MOVE 计算 new->arch.flags(即 memslot 是支持大页的 (KVM_MEM_HUGEPAGE_CAPABLE) 还是不支持大页的 (KVM_MEM_HUGEPAGE_INCAPABLE)),而对于其他所有变更则提前返回。然而,通用代码为每次变更分配一个清零的 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”情况。

对于 KVM_MR_FLAGS_ONLY 的情况,将 arch flags 从旧的 memslot 继承过来,因为在这种情况下 GPA、HVA 和大小被保证保持不变。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

来源

Do you want to use VulDB in your project?

Use the official API to access entries easily!