В ядре Linux устранена следующая уязвимость:
crypto: ccp — исправить snp_filter_reserved_mem_regions() на единицу
Сашико отмечает:
> относительно проверки границ в snp_filter_reserved_mem_regions()
> вызывается через walk_iomem_res_desc(): выполняет проверку
> if ((range_list->num_elements * 16 + 8) > PAGE_SIZE)
> разрешить переполнение буфера кучи на единицу?
>
> Если range_list->num_elements равно 255, 255 * 16 + 8 = 4088, что составляет <= 4096.
> Диапазон записи->база (8 байт) заполняет 4088-4095, но запись диапазона->page_count
> (4 байта) будут записываться в 4096-4099, переполняя выделенный kzalloc
> Буфер PAGE_SIZE.
Исправьте это, учтя запись, в которую будет записана, в дополнение к
записи, которые уже выделены.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: crypto: ccp - Fix snp_filter_reserved_mem_regions() off-by-one Sashiko notes: > regarding the bounds check in snp_filter_reserved_mem_regions() > called via walk_iomem_res_desc(): does the check > if ((range_list->num_elements * 16 + 8) > PAGE_SIZE) > allow an off-by-one heap buffer overflow? > > If range_list->num_elements is 255, 255 * 16 + 8 = 4088, which is <= 4096. > Writing range->base (8 bytes) fills 4088-4095, but writing range->page_count > (4 bytes) would write to 4096-4099, overflowing the kzalloc-allocated > PAGE_SIZE buffer. Fix this by accounting for the entry about to be written to, in addition to the entries that are already allocated.
Характеристики атаки
Последствия
Строка CVSS v3.1