CVE-2026-89908 in Linux
Sumário
de VulDB • 16/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
LoongArch: KVM: Preservar as flags de arquitetura (arch) dos memslot durante o KVM_MR_FLAGS_ONLY
kvm_arch_prepare_memory_region() calcula new->arch.flags, ou seja, se um memslot é KVM_MEM_HUGEPAGE_CAPABLE ou KVM_MEM_HUGEPAGE_INCAPABLE, apenas para os casos KVM_MR_CREATE e KVM_MR_MOVE, retornando antecipadamente para qualquer outra alteração. No entanto, o código genérico aloca um memslot zerado para cada mudança e nunca copia old->arch; portanto, após uma atualização do tipo KVM_MR_FLAGS_ONLY (por exemplo, alternar a flag KVM_MEM_LOG_DIRTY_PAGES para migração ao vivo), o memslot ativo possui arch.flags == 0.
Com ambas as flags desativadas, fault_supports_huge_mapping() passa diretamente para a verificação de alinhamento no intervalo HVA apenas, que já não verifica se o GPA e o HVA possuem o mesmo deslocamento dentro de um PMD. Um memslot que foi marcado como KVM_MEM_HUGEPAGE_INCAPABLE devido a uma incompatibilidade de deslocamento entre GPA/HVA pode então ser mapeado com entradas PMD em caso de falhas de leitura (read faults). Como kvm_map_page() alinha o gfn e o pfn independentemente, o convidado acaba acessando as páginas host incorretas, exatamente no cenário "d -> f, e -> g" descrito no comentário acima da verificação.
Transfira as flags de arquitetura do memslot antigo para o novo durante operações KVM_MR_FLAGS_ONLY, já que se garante que o GPA, o HVA e o tamanho permanecem inalterados nesse caso.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.