CVE-2026-45987 in Linux
Сводка
по VulDB • 30.05.2026
В ядре Linux устранена следующая уязвимость:
KVM: nSVM: Синхронизация тени прерывания (interrupt shadow) с кэшированным vmcb12 после выполнения VMRUN для L2
После выполнения VMRUN в режиме гостя функция nested_sync_control_from_vmcb02() синхронизирует поля, записанные процессором, из vmcb02 в кэшированный vmcb12. Это необходимо, поскольку кэшированный vmcb12 используется как авторитетная копия некоторых параметров управления и является полезной нагрузкой при сохранении/восстановлении вложенного состояния.
Поле int_state также записывается процессором, в частности бит 0 (т.е. SVM_INTERRUPT_SHADOW_MASK) для вложенных виртуальных машин, однако оно не синхронизируется с кэшированным vmcb12. Это не вызывает проблем, если в пути восстановления операция KVM_SET_NESTED_STATE предшествует KVM_SET_VCPU_EVENTS, поскольку тень прерывания будет корректно восстановлена в vmcb02 (KVM_SET_VCPU_EVENTS перезаписывает то, что KVM_SET_NESTED_STATE восстановил в int_state).
Однако, если KVM_SET_VCPU_EVENTS предшествует KVM_SET_NESTED_STATE, тень прерывания будет восстановлена в vmcb01 вместо vmcb02. Это, как правило, будет безвредно для L1 (задержка прерывания), но не для L2. Для L2 виртуальный процессор (vCPU) может зависнуть (например, если прерывание пробуждения доставляется до HLT, который должен был находиться в тени прерывания).
Синхронизируйте int_state с кэшированным vmcb12 в nested_sync_control_from_vmcb02(), чтобы избежать этой проблемы. В этом случае KVM_SET_NESTED_STATE восстановит правильное состояние тени прерывания, а если за ним последует KVM_SET_VCPU_EVENTS, оно перезапишет его тем же значением.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.