В ядре Linux устранена следующая уязвимость:
ASoC: SOF: топология: проверка размера массива поставщика перед анализом
sof_parse_token_sets() читает массив->размер при переборе топологии
частные данные. Условие цикла только проверяет, остались ли некоторые данные, поэтому
неверная топология с усеченным конечным массивом поставщиков может привести к
анализатор читает поле размера до того, как станет доступен полный заголовок массива поставщика. Убедитесь, что оставшиеся личные данные содержат полную
snd_soc_tplg_vendor_array перед чтением array->size.
Объявленная проверка размера массива также должна оставаться подписанной. размер — это целое число,
но sizeof(*array) имеет тип size_t, поэтому их сравнение напрямую способствует
отрицательные значения размера равны беззнаковым и позволяют им пройти проверку,
как сообщается в ссылке на ветку стабильного обзора ниже. Приведите sizeof(*array) к int при проверке объявленного размера массива. Это
отклоняет отрицательные, нулевые и другие слишком маленькие размеры перед анализатором
отправляет код, специфичный для кортежа.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: ASoC: SOF: topology: validate vendor array size before parsing sof_parse_token_sets() reads array->size while iterating over topology private data. The loop condition only checks that some data remains, so a malformed topology with a truncated trailing vendor array can make the parser read the size field before a full vendor-array header is available. Validate that the remaining private data contains a complete snd_soc_tplg_vendor_array header before reading array->size. The declared array size check also needs to remain signed. asize is an int, but sizeof(*array) has type size_t, so comparing them directly promotes negative asize values to unsigned and lets them pass the check, as reported in the stable review thread reference below. Cast sizeof(*array) to int when validating the declared array size. This rejects negative, zero and otherwise too-small sizes before the parser dispatches to the tuple-specific code.