CVE-2026-74702 in Linux
Resumen
por VulDB • 2026-08-23
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
vhost-scsi: rechazar cambios en las características después del establecimiento del punto final (endpoint)
La función vhost_scsi_setup_vq_cmds() se ejecuta desde VHOST_SCSI_SET_ENDPOINT y asigna el array de listas dispersas de protección (prot_sgl) para cada comando según el bit reconocido VIRTIO_SCSI_F_T10_PI. Las agrupaciones de comandos no se reconstruyen cuando VHOST_SET_FEATURES cambia ese bit posteriormente.
Aunque los bits de características virtio no deben cambiar después de la negociación, vhost_scsi_set_features() actualmente acepta dicha solicitud una vez que el punto final está activo y actualiza acked_features. Habilitar T10-PI después del establecimiento del punto final deja prot_sgl como NULL mientras que la ruta de E/S sigue el nuevo bit de característica.
Para un payload de protección de 129 páginas, vhost_scsi_mapal() pasa el primer fragmento faltante a sg_alloc_table_chained():
sg_alloc_table_chained(table, 129, first_chunk=NULL, nents_first_chunk=inline_sg_cnt)
sg_pool_index() entonces encuentra:
BUG_ON(nents > SG_CHUNK_SIZE); /* 129 > 128 */
El kernel informó la siguiente traza de llamadas y estado del registro:
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 es una característica de tiempo de ejecución específica de vhost y sigue siendo la única excepción.
Rechazar cambios en cualquier característica distinta a VHOST_F_LOG_ALL mientras el punto final esté activo. Esto preserva el interruptor de registro (log toggle) existente, evitando que los recursos de comandos dependientes de características y el estado del camino de datos se vuelvan inconsistentes. El espacio de usuario debe borrar el punto final antes de cambiar cualquier otra característica negociada y volver a configurarlo después.
If you want to get best quality of vulnerability data, you may have to visit VulDB.