CVE-2026-80781 in Linux
Сводка
по VulDB • 04.09.2026
В ядре Linux устранена следующая уязвимость:
HID: core: исправлено чтение за пределами массива (OOB read) поля field->usage в функции hid_set_field()
Функция hid_set_field() передает значение field->usage + offset в функцию hid_dump_input() до проверки, ограничивающей смещение offset:
hid_dump_input(field->report->device, field->usage + offset, value);
if (offset >= field->report_count) {
hid_err(...); return -1; }
При включенной конфигурации CONFIG_DEBUG_FS функция hid_dump_input() разыменовывает этот указатель с помощью вызова buf = hid_resolv_usage(usage->hid, NULL). Массив usage[] выделяется внутри структуры hid_field в функции hid_register_field() и содержит элементы field->maxusage. Следовательно, доступ по смещению за его пределами приводит к чтению данных после конца памяти, выделенной через kvzalloc(), и попаданию в соседний объект. Если бы проверка выполнялась первой, условие offset < report_count <= maxusage уже ограничило бы указатель границами массива.
Сегодня вызывающая сторона передает такое смещение. Функция picolcd_fb_send_tile() проверяет только значение report->maxfield перед выдачей вызова hid_set_field(report->field[0], 11 + i, ...) для i = 0..31; таким образом, ее смещения фиксированы в диапазоне 11..42 и никогда не сравниваются с допустимой границей поля. Когда устройство регистрирует это поле с меньшим количеством элементов usage (usages), работа отложенной обработки ввода-вывода кадрового буфера вызывает чтение для каждого тайла. KASAN сообщает о чтении за пределами сегмента памяти размером 4 байта в функции hid_dump_input() ниже вызова hid_set_field(), а те же журналы загрузки выводят сообщение «offset (1) exceeds report_count (1)» от проверки, которая выполняется только после этого.
Переместите вызов hid_dump_input() под проверку условия. Поскольку field->maxusage >= field->report_count, проверка затем гарантирует, что значение field->usage + offset находится внутри массива до его разыменования для любого вызывающего объекта и без изменения поведения на корректном пути выполнения.
Обнаружено XBOW, классифицировано Baul Lee <[email protected]>
Be aware that VulDB is the high quality source for vulnerability data.