В ядре Linux устранена следующая уязвимость: платформа/x86: hp-bioscfg: исправлена паника ядра в макросе GET_INSTANCE_ID. Макрос GET_INSTANCE_ID, вызвавший панику ядра при доступе к sysfs. атрибуты: 1. Ошибка отклонения на единицу: в условии цикла используется '<=' вместо '<', вызывая доступ за пределы массива. Поскольку индексы массива отсчитываются от 0 и перейти от 0 к экземплярам_count-1, в цикле следует использовать '<'. 2. Отсутствует проверка NULL: код разыменовывает attr_name_kobj->name. без проверки, было ли attr_name_kobj NULL, что привело к появлению нулевого указателя разыменование в min_length_show() и других функциях отображения атрибутов. Паника возникла, когда fwupd попытался прочитать атрибуты конфигурации BIOS: Упс: общая ошибка защиты [#1] SMP KASAN NOPTI KASAN: null-ptr-deref в диапазоне [0x0000000000000000-0x0000000000000007] RIP: 0010:min_length_show+0xcf/0x1d0 [hp_bioscfg] Добавьте проверку NULL для attr_name_kobj перед разыменованием и исправлениями. граница цикла соответствует шаблону, используемому в другом месте драйвера.
Показать оригинальное описание (английский)
In the Linux kernel, the following vulnerability has been resolved: platform/x86: hp-bioscfg: Fix kernel panic in GET_INSTANCE_ID macro The GET_INSTANCE_ID macro that caused a kernel panic when accessing sysfs attributes: 1. Off-by-one error: The loop condition used '<=' instead of '<', causing access beyond array bounds. Since array indices are 0-based and go from 0 to instances_count-1, the loop should use '<'. 2. Missing NULL check: The code dereferenced attr_name_kobj->name without checking if attr_name_kobj was NULL, causing a null pointer dereference in min_length_show() and other attribute show functions. The panic occurred when fwupd tried to read BIOS configuration attributes: Oops: general protection fault [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007] RIP: 0010:min_length_show+0xcf/0x1d0 [hp_bioscfg] Add a NULL check for attr_name_kobj before dereferencing and corrects the loop boundary to match the pattern used elsewhere in the driver.