CVE-2026-64351 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux устранена следующая уязвимость:
net: usb: kalmia: ограничение длины кадра RX в функции kalmia_rx_fixup()
Функция kalmia_rx_fixup() вычисляет значение `usb_packet_length = skb->len - (2 * KALMIA_HEADER_LENGTH)` как 16-битное целое число (`u16`), защищенное только проверкой перед циклом, которая гарантирует, что `skb->len` не меньше чем `KALMIA_HEADER_LENGTH`, равный 6. Устройство может передать короткий кадр bulk-IN с длиной `skb->len` в диапазоне от 6 до 11 или оставить небольшой остаток для обработки на последующих итерациях цикла. В обоих случаях происходит переполнение по отрицательному значению (underflow) переменной `usb_packet_length`, принимающей значение около 65530.
Это позволяет обойти путь усечения, проверяющий условие `usb_packet_length < ether_packet_length`. Значение `ether_packet_length`, предоставленное устройством и представляющее собой число в формате little-endian (`le16`) до 65535, считанное из поля `header_start[2]`, затем используется для вызова функции `memcmp()`, а также последующих операций `skb_trim()` и `skb_pull()`, выходящих за пределы буфера приема (rx buffer). Размер буфера rx равен `hard_mtu * 10`, то есть 14000 байт. Это приводит к чтению вне допустимых границ памяти.
Требовать наличия как начального, так и конечного кадрового заголовка перед их вычитанием на каждой итерации цикла.
Be aware that VulDB is the high quality source for vulnerability data.