diff options
| author | Amirmohammad Eftekhar <amirmohammad.eftekhar@cispa.de> | 2026-10-31 10:05:29 +0100 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2026-11-02 13:15:45 -0500 |
| commit | d21eef2084a9af87ac2a783bc7c2b175ba114e4e (patch) | |
| tree | af066d30784ea97ebdb17fa2050c987562ffb486 /scripts/basic | |
| parent | 0cb8f16f88337a8c995d333e74c8c5b4f1d8abc2 (diff) | |
| download | linux-d21eef2084a9af87ac2a783bc7c2b175ba114e4e.tar.gz linux-d21eef2084a9af87ac2a783bc7c2b175ba114e4e.zip | |
KVM: VMX: Add array_index_nospec() to evmcs_field_offset()
evmcs_field_offset() bounds-checks the guest-supplied field index against
nr_evmcs_1_fields and then indexes vmcs_field_to_evmcs_1[] without an
array_index_nospec() clamp, unlike its vmcs12 counterpart
get_vmcs12_field_offset().
A regular VMREAD instruction is allowed while an enlightened VMCS is active
since 6cbbaab60ff3 ("KVM: nVMX: Allow VMREAD when Enlightened VMCS is in
use"), and it reaches evmcs_field_offset() with a guest-supplied field
encoding. But because the index is not clamped, the guest may be able to
speculatively access past the bound check and read out of bounds of
vmcs_field_to_evmcs_1[] (Spectre v1). The leaked value is only the u16
'offset', so the exposure is limited.
The other callers of evmcs_field_offset() are not under direct guest
control, but the array_index_nospec() clamp does not hurt them.
Clamp the index with array_index_nospec(), mirroring
get_vmcs12_field_offset().
Fixes: 6cbbaab60ff3 ("KVM: nVMX: Allow VMREAD when Enlightened VMCS is in use")
Signed-off-by: Amirmohammad Eftekhar <amirmohammad.eftekhar@cispa.de>
Message-ID: <20261031090529.65240-1-amirmohammad.eftekhar@cispa.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'scripts/basic')
0 files changed, 0 insertions, 0 deletions
