CVE-2026-64457 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux устранена следующая уязвимость:
virtio_pci: исправлен поиск указателя информации о vq (vring queue) по неверному индексу
Отвязка устройства virtio balloon:
echo virtio0 > /sys/bus/virtio/drivers/virtio_balloon/unbind
вызывает разыменование нулевого указателя. В выводе dmesg отображается следующее сообщение:
BUG: kernel NULL pointer dereference, address: 0000000000000008 [...]
RIP: 0010:__list_del_entry_valid_or_report+0x5/0xf0 Call Trace: <TASK> vp_del_vqs+0x121/0x230 remove_common+0x135/0x150 virtballoon_remove+0xee/0x100 virtio_dev_remove+0x3b/0x80 device_release_driver_internal+0x187/0x2c0 unbind_store+0xb9/0xe0 kernfs_fop_write_iter.llvm.11660790530567441834+0xf6/0x180 vfs_write+0x2a9/0x3b0 ksys_write+0x5c/0xd0 do_syscall_64+0x54/0x230 entry_SYSCALL_64_after_hwframe+0x29/0x31 [...]
</TASK>
Устройство virtio_balloon регистрирует 5 очередей (inflate, deflate, stats, free_page, reporting), но только первые две являются безусловными. Очереди stats, free_page и reporting зависят от соответствующих битов признаков (feature bits). Когда какой-либо из этих признаков отсутствует, запись vqs_info с именем == NULL создает «дыры» в массиве.
Корневая причина заключается в несоответствии индексации, возникшем при изменении способа передачи хранилища информации о vq через аргумент функции. Функции vp_find_vqs_msix() и vp_find_vqs_intx() сохраняют указатель info по адресу vp_dev->vqs[i], где 'i' — это разреженный (sparse) индекс массива, передаваемый вызывающей стороной. Однако сам virtqueue получает значение vq->index из queue_idx, который является плотным (dense) индексом и пропускает записи NULL. При наличии «дыр» значения 'i' и queue_idx расходятся. Позже функция vp_del_vqs() выполняет поиск info по адресу vp_dev->vqs[vq->index], используя плотный индекс для разреженно заполненного массива, что приводит к обращению к значению NULL.
Исправление заключается в сохранении информации по адресу vp_dev->vqs[queue_idx] вместо vp_dev->vqs[i], чтобы индекс сохранения совпадал с индексом поиска (vq->index). Исправление применяется как для пути MSIX, так и для пути INTX.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.