Ad

CVE-2026-89571

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

В ядре Linux устранена следующая уязвимость: cxl/features: привязка полезных данных команды fwctl к входному буферу. fwctl_cmd_rpc() копирует байты cmd->in_len в inbuf = kvzalloc(cmd->in_len) и передает inbuf и in_len в ->fw_rpc(). Обратный вызов CXL cxlctl_fw_rpc() игнорирует in_len и никогда не сверяет с ним управляемый пользователем op_size. cxlctl_set_feature() ограничивает op_size только снизу (op_size <= sizeof(feat_in->hdr)) а затем читает op_size - sizeof(hdr) байты из feat_in->feat_data через cxl_set_feature(). С небольшой ин_лен и большой op_size, первый memcpy() уже читает мимо буфер kvzalloc(in_len); байты за пределами границ помещаются в почтовый ящик полезная нагрузка и отправляется на устройство, и достаточно большой op_size может войти в неотображенная память и упс ядро.

Пути Get прикрепляют op_size к фиксированному значению. size, но также прочитайте входную структуру без проверки in_len. Отклонять в единой точке отправки любой запрос, фиксированный заголовок которого плюс op_size не помещается в скопированный буфер. Нижняя граница тестовых охранников вычитание и гарантирует, что op_size был скопирован до его чтения.

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

In the Linux kernel, the following vulnerability has been resolved: cxl/features: bound fwctl command payload to the input buffer fwctl_cmd_rpc() copies cmd->in_len bytes into inbuf = kvzalloc(cmd->in_len) and passes inbuf and in_len to ->fw_rpc(). The CXL callback cxlctl_fw_rpc() ignores in_len and never checks the user-controlled op_size against it. cxlctl_set_feature() bounds op_size only from below (op_size <= sizeof(feat_in->hdr)) and then reads op_size - sizeof(hdr) bytes from feat_in->feat_data via cxl_set_feature(). With a small in_len and a large op_size the first memcpy() already reads past the kvzalloc(in_len) buffer; the out-of-bounds bytes are placed in the mailbox payload and sent to the device, and a large enough op_size can walk into unmapped memory and oops the kernel. The Get paths pin op_size to a fixed size but likewise read the input struct without checking in_len. Reject, at the single dispatch point, any request whose fixed header plus op_size does not fit in the copied-in buffer. The lower-bound test guards the subtraction and ensures op_size was copied in before it is read.

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

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

Последствия

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

Строка CVSS v3.1