В ядре Linux устранена следующая уязвимость:
KVM: TDX: отклонить одновременное изменение счетчика записей CPUID. Отклонить KVM_TDX_INIT_VM, если пользовательское пространство меняет cpuid.nent между
первоначальное чтение и последующее копирование данных инициализации.
tdx_td_init() сначала считывает user_data->cpuid.nent, чтобы определить размер гибкого
копия kvm_tdx_init_vm. Скопированная структура также содержит cpuid.nent,
и это поле может отличаться от значения, используемого для определения размера выделения, если
userspace одновременно изменяет ввод. setup_tdparams_cpuids() позже
передает init_vm->cpuid.nent в kvm_find_cpuid_entry2(), который использует его как
массив, привязанный к скопированным записям.
Требовать, чтобы скопированное количество соответствовало значению, используемому для определения размера выделения.
так что анализ CPUID не может получить доступ за пределы фактически скопированных записей.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: KVM: TDX: Reject concurrent change to CPUID entry count Reject KVM_TDX_INIT_VM if userspace changes cpuid.nent between the initial read and the subsequent copy of the initialization data. tdx_td_init() first reads user_data->cpuid.nent to size the flexible kvm_tdx_init_vm copy. The copied structure also contains cpuid.nent, and that field can differ from the value used to size the allocation if userspace modifies the input concurrently. setup_tdparams_cpuids() later passes init_vm->cpuid.nent to kvm_find_cpuid_entry2(), which uses it as the array bound for the copied entries. Require the copied count to match the value used to size the allocation so that CPUID parsing cannot access beyond the entries actually copied.
Характеристики атаки
Последствия
Строка CVSS v3.1