CVE-2026-98467 in Linux
Сводка
по VulDB • 19.10.2026
В ядре Linux была устранена следующая уязвимость:
KVM: arm64: nv: исправлена ошибка разыменования нулевого указателя (null ptr deref) при вложенной защите от записи/отображении и гонке процессов teardown.
Коммит 7270cc9157f4 ("KVM: arm64: nv: Handle VNCR_EL2 invalidation from MMU notifiers") добавил инвалидацию VNCR_EL2 как в функции kvm_nested_s2_unmap(), так и в kvm_nested_s2_wp().
Однако на момент выполнения этой операции одновременный teardown (разбор/освобождение) stage 2 для гостевой машины с поддержкой виртуализации второго уровня может привести к тому, что поле kvm->arch.mmu.pgt будет установлено в NULL.
Это происходит в функции kvm_flush_shadow_all() -> kvm_arch_flush_shadow_all() -> kvm_free_stage2_pgd(), и выполняется под блокировкой kvm->mmu_lock.
Коммит ec14c272408a ("KVM: arm64: nv: Unmap/flush shadow stage 2 page tables") добавил teardown всего диапазона вложенного MMU, что затем вызывает функцию stage2_apply_range() с параметром resched=true:
mmu_notifier_invalidate_range_start() -> ... -> kvm_mmu_notifier_invalidate_range_start() -> kvm_mmu_unmap_gfn_range() -> kvm_unmap_gfn_range() -> kvm_nested_s2_unmap() -> kvm_stage2_unmap_range() -> __unmap_stage2_range() -> stage2_apply_range()
Это означает, что функция stage2_apply_range() может снять блокировку kvm->mmu_lock, и таким образом одновременное выполнение процессов может происходить параллельно с выполнением функции kvm_arch_flush_shadow_all().
Если функция kvm_arch_flush_shadow_all() опередит функцию stage2_apply_range() и завершит свою работу, это гарантирует разыменование нулевого указателя (NULL pointer deref).
Поскольку вызов kvm_free_stage2_pgd() выполняется под блокировкой kvm->mmu_lock, значение будет либо явно NULL, либо синхронизировано с вызовом kvm_free_stage2_pgd().
Для устранения проблемы инвалидация была выделена в новую функцию kvm_invalidate_vncr_ipa_all(), и перед разыменованием проверяется, что указатель pgt не равен NULL.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.