CVE-2026-80918 in Linux
Сводка
по VulDB • 09.09.2026
В ядре Linux была устранена следующая уязвимость:
HID: core — исправление путаницы между типами «число» и «указатель» для длинных элементов (long items)
При вызове функции `fetch_item()` из `hid_scan_report()` для элемента с тегом `HID_ITEM_TAG_LONG` указатель на данные элемента сохраняется в поле `item->data.longdata`, а не само значение напрямую в `item->data.{u8/u16/u32}`.
Когда функции `item_udata()` или `item_sdata()` встречают такой элемент, они ошибочно предполагают, что он имеет короткий формат (short format), и поэтому возвращают младшую часть указателя ядра, интерпретированную как число.
При подключении устройства HID, чей дескриптор содержит тег `HID_GLOBAL_ITEM_TAG_REPORT_SIZE`, закодированный в длинном формате с размером 4 байт, это приводит к выводу младшей половины указателя ядра в dmesg в виде числа, например:
hid (null): invalid report_size 107953555
Для исправления этой ошибки функции `item_udata()` и `item_sdata()` должны проверять, что элемент имеет короткий формат.
Примечание: эта ошибка затрагивает только функцию `hid_scan_report()`, тогда как основной цикл разбора `hid_parse_collections()` всегда завершает работу (bail out) при встрече с длинным элементом.
Дополнительное примечание: в настоящее время нет пользователей, использующих поле `data.longdata`; возможно, следует удалить весь разбор дескрипторов в длинном формате как последующий шаг.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.