Ad

CVE-2026-89587

HIGH CVSS 3.1: 7,8 EPSS 0.14%
Обновлено 14 сентября 2026
Linux
Параметр Значение
CVSS 7,8 (HIGH)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: ACPI: pfr_update: исправлено переполнение буфера стека в query_capability(). query_capability() копирует четыре объекта буфера ACPI, возвращенные прошивка _DSM в поля u8[16] фиксированного размера в структуре pfru_update_cap_info с использованием memcpy с длиной, предоставленной прошивкой: memcpy(&cap_hdr->code_type, элементы[CAP_CODE_TYPE_IDX].buffer.pointer, элементы[CAP_CODE_TYPE_IDX].buffer.length); Тот же шаблон повторяется для drv_type, Platform_id и oem_id. Если прошивка возвращает buffer.length > 16 для любого из этих полей, memcpy записывает мимо целевого массива. Структура pfru_update_cap_info выделяется в стеке в pfru_ioctl().

Подтверждено KASAN в версии 7.2-rc6: три отчета о выходе за пределы стека генерируются, когда DSM возвращает 64-байтовые буферы, при этом записи достигают 44 байта после конца окна кадра cap_hdr [64, 156) в соседние красные зоны стека. Введите вспомогательный указатель на out_obj->package.elements и используйте его. для проверки длины каждого буфера на соответствие размеру его целевого поля перед копированием, возвращая -EINVAL, если прошивка предоставляет слишком большой буфер.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: ACPI: pfr_update: fix stack buffer overflow in query_capability() query_capability() copies four ACPI buffer objects returned by the firmware _DSM into fixed-size u8[16] fields in struct pfru_update_cap_info using memcpy with the firmware-supplied length: memcpy(&cap_hdr->code_type, elements[CAP_CODE_TYPE_IDX].buffer.pointer, elements[CAP_CODE_TYPE_IDX].buffer.length); The same pattern repeats for drv_type, platform_id, and oem_id. If the firmware returns buffer.length > 16 for any of these fields, memcpy writes past the destination array. struct pfru_update_cap_info is stack-allocated in pfru_ioctl(). Confirmed with KASAN on 7.2-rc6: three stack-out-of-bounds reports are generated when a DSM returns 64-byte buffers, with writes reaching 44 bytes past the end of cap_hdr's [64, 156) frame window into adjacent stack redzones. Introduce a helper pointer to out_obj->package.elements and use it to validate each buffer length against its destination field size before copying, returning -EINVAL if the firmware supplies an oversized buffer.

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1