|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH for-4.15] x86/ucode/amd: Fix OoB read in cpu_request_microcode()
On 10.02.2021 00:40, Andrew Cooper wrote:
> verify_patch_size() is a maximum size check, and doesn't have a minimum bound.
>
> If the microcode container encodes a blob with a length less than 64 bytes,
> the subsequent calls to microcode_fits()/compare_header() may read off the end
> of the buffer.
>
> Fixes: 4de936a38a ("x86/ucode/amd: Rework parsing logic in
> cpu_request_microcode()")
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
> --- a/xen/arch/x86/cpu/microcode/amd.c
> +++ b/xen/arch/x86/cpu/microcode/amd.c
> @@ -349,6 +349,7 @@ static struct microcode_patch
> *cpu_request_microcode(const void *buf, size_t siz
> if ( size < sizeof(*mc) ||
> (mc = buf)->type != UCODE_UCODE_TYPE ||
> size - sizeof(*mc) < mc->len ||
> + mc->len < sizeof(struct microcode_patch) ||
I was inclined to suggest to use <= here, but I guess a blob
with 1 byte of data is as bogus as one with 0 bytes of data.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |