CVE-2026-74702 in Linux
Сводка
по VulDB • 22.08.2026
В ядре Linux была устранена следующая уязвимость:
vhost-scsi: отклонять изменения функций после установки конечной точки (endpoint)
Функция vhost_scsi_setup_vq_cmds() вызывается при обработке VHOST_SCSI_SET_ENDPOINT и выделяет массив списков защиты scatterlist для каждой команды (prot_sgl) в соответствии с подтвержденным битом функции VIRTIO_SCSI_F_T10_PI. Пулы команд не перестраиваются, когда последующее изменение бита через VHOST_SET_FEATURES меняет это значение.
Хотя биты функций virtio не должны изменяться после согласования функций (feature negotiation), vhost_scsi_set_features() в настоящее время принимает такой запрос после активации конечной точки и обновляет поле acked_features. Включение T10-PI после настройки конечной точки оставляет prot_sgl равным NULL, тогда как путь ввода/вывода следует новому биту функции.
Для полезной нагрузки защиты размером 129 страниц vhost_scsi_mapal() передает отсутствующий первый фрагмент в sg_alloc_table_chained():
sg_alloc_table_chained(table, 129, first_chunk=NULL, nents_first_chunk=inline_sg_cnt)
Затем sg_pool_index() сталкивается с:
BUG_ON(nents > SG_CHUNK_SIZE); /* 129 > 128 */
Ядро сообщило следующий трассировку вызовов и состояние регистров:
Call Trace: <TASK> ? __sg_alloc_table+0x1d8/0x250 ? __pfx_vhost_run_work_list+0x10/0x10 [vhost]
sg_alloc_table_chained+0x59/0xf0 ? __pfx_sg_pool_alloc+0x10/0x10 ? vhost_scsi_calc_sgls.constprop.0+0x43/0x60 [vhost_scsi]
vhost_scsi_handle_vq+0xf02/0x1700 [vhost_scsi]
? __pfx_vhost_scsi_handle_vq+0x10/0x10 [vhost_scsi]
vhost_scsi_handle_kick+0x37/0x50 [vhost_scsi]
vhost_run_work_list+0x8e/0xd0 [vhost]
vhost_task_fn+0xe1/0x210 ret_from_fork+0x348/0x540 </TASK>
RIP: 0010:0x4 CR2 = 0x4 RSP: 0018:ffffc90000dbf940 EFLAGS: 00010202 RAX: ffffffff82396810 RBX: ffff88811dc28b80 RCX: 0000000000000000 RDX: 0000000000000000 RSI: 0000000000000820 RDI: 0000000000000081
VHOST_F_LOG_ALL — это специфичная для vhost функция времени выполнения и остается единственным исключением.
Отклонять изменения любых функций, кроме VHOST_F_LOG_ALL, пока конечная точка активна. Это сохраняет существующее переключение журнала во время работы (runtime log toggle), предотвращая рассогласование ресурсов команд, зависящих от функций, и состояния пути данных. Пользовательское пространство должно очистить конечную точку перед изменением любой другой согласованной функции и восстановить настройку конечной точки после этого.
Once again VulDB remains the best source for vulnerability data.