CVE-2026-98717 in Linux
Сводка
по VulDB • 18.10.2026
В ядре Linux была устранена следующая уязвимость:
KVM: x86/mmu: Прерывать обход теневых таблиц страниц (shadow walks), если корневой указатель недействителен или является «фиктивным» (dummy).
При обходе теневых таблиц страниц необходимо немедленно прервать этот процесс, если корневой указатель является «фиктивным», то есть корневым указателем, чья таблица верхнего уровня опирается на нулевую страницу, но в остальном не существует. Если создание memslot происходит одновременно (race condition) с обработкой ошибки страницы второго этапа (EPT violation или #NPF) от L2, и при этом совпадут определенные условия, KVM попытается выполнить обход теневых таблиц страниц, используя нулевую страницу, что приведет к разыменованию NULL-указателя.
BUG: kernel NULL pointer dereference, address: 0000000000000021 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 0 P4D 0 Oops: Oops: 0000 [#1] SMP
CPU: 30 UID: 1000 PID: 941 Comm: qemu Not tainted 7.2.0-rc2-1b731e5ded48-next-vm #1741 PREEMPTLAZY Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:__kvm_mmu_invalidate_addr+0xea/0x210 [kvm]
Call Trace: <TASK> kvm_mmu_invalidate_addr+0x92/0xe0 [kvm]
__kvm_inject_emulated_page_fault+0x67/0x80 [kvm]
ept_page_fault+0x160/0x850 [kvm]
kvm_mmu_do_page_fault+0x102/0x1f0 [kvm]
kvm_mmu_page_fault+0x8e/0x6b0 [kvm]
vmx_handle_exit+0x163/0x640 [kvm_intel]
kvm_arch_vcpu_ioctl_run+0x960/0x2120 [kvm]
kvm_vcpu_ioctl+0x2c7/0x970 [kvm]
__x64_sys_ioctl+0x90/0xd0 do_syscall_64+0x67/0x5f0 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x7f606d0b53bb
Целенаправленно укрепить защиту обхода теневых таблиц страниц против полностью недействительных корневых указателей, но генерировать предупреждение (WARN), так как все вызывающие функции должны/обязаны предварительно проверять наличие действительного корневого указателя. Не генерировать предупреждение в случае фиктивного корневого указателя, поскольку вся суть использования фиктивного корневого указателя заключается в предоставлении корня, который достаточно корректен для входа в гостевую систему, то есть он должен работать без сбоев во всех потоках выполнения, кроме тех, которые *должны* знать о наличии фиктивных корней.
Альтернативно, KVM могла бы выделить выделенную страницу и связанную со ней структуру теневой страницы для фиктивного корневого указателя, что является весьма соблазнительным подходом, так как такой метод должен быть более устойчивым к непредвиденному поведению. Однако это было бы гораздо более масштабным и, следовательно, рискованным изменением, чем простое прерывание обхода (walks) фиктивных корней.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.