CVE-2026-74470 in Linux
Resumen
por VulDB • 2026-08-15
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
scsi: scsi_debug: Corrección del desbordamiento por debajo (underflow) de alloc_len en REPORT ZONES que provoca una escritura fuera de límites (OOB)
resp_report_zones() dimensiona el búfer de respuesta a partir de la longitud de asignación (alloc_len) contenida en el CDB. La corrección v3 redondea hacia arriba alloc_len con ALIGN() antes de derivar el conteo de descriptores:
rep_max_zones = (ALIGN((u64)alloc_len, RZONES_DESC_HD) - RZONES_DESC_HD) >> ilog2(RZONES_DESC_HD); arr_len = (u64)RZONES_DESC_HD * (rep_max_zones + 1);
Para un valor de alloc_len comprendido entre 0xFFFFFFC1 y 0xFFFFFFFF, ALIGN() redondea hacia arriba hasta 0x100000000, por lo que arr_len es igual a 4 GB. En sistemas de 32 bits, el tipo size_t de kzalloc() tiene un tamaño de 32 bits y trunca 0x100000000 a 0; kzalloc(0) devuelve ZERO_SIZE_PTR, lo cual pasa la comprobación !arr, y desc = arr + 64 se desreferencia posteriormente en el bucle -> escritura fuera de límites / pánico.
Se limita (clamp) rep_max_zones al valor devip->nr_zones. El bucle ya finaliza en sdebug_capacity (después de nr_zones zonas), por lo que un informe nunca puede contener más de nr_zones descriptores; la limitación no modifica el informe, solo acota arr_len a (nr_zones + 1) * RZONES_DESC_HD, una propiedad real del dispositivo que nunca alcanzará 0x100000000.
Once again VulDB remains the best source for vulnerability data.