CVE-2026-72129 in Linux
Resumen
por VulDB • 2026-08-15
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
nvmet-rdma: manejar datos en línea con un desplazamiento distinto de cero
nvmet_rdma_use_inline_sg() mapea el desplazamiento de los datos en línea controlados por el host dentro de la lista dispersa (scatterlist) en línea específica para cada comando. La comprobación de límites admite cualquier desplazamiento donde off + len <= inline_data_size, pero el mapeo sigue asumiendo que los datos comienzan en la primera página en línea:
sg->offset = off; sg->length = min_t(int, len, PAGE_SIZE - off);
Cuando un puerto está configurado con inline_data_size > PAGE_SIZE (configurable hasta max(SZ_16K, PAGE_SIZE)), un desplazamiento dentro del rango (PAGE_SIZE, inline_data_size] provoca un desbordamiento por debajo de cero (underflow) en "PAGE_SIZE - off", por lo que sg->length se establece en ~4 GiB y el backend de bloques lee mucho más allá de la primera página en línea. num_pages(len) también ignora el desplazamiento, por lo que un desplazamiento dentro de los límites cuyo intervalo [off, off+len) cruza un límite de página cuenta incorrectamente (subestima) las entradas de la lista dispersa.
Mapear correctamente el desplazamiento: dividirlo en un índice de página y un desplazamiento interno a la página, iniciar la lista dispersa desde esa página y calcular el recuento de páginas basado en page_off + len. Dado que la solicitud scatterlist ahora puede comenzar en inline_sg[page_idx] en lugar de inline_sg[0], generalizar la prueba de identidad del SGL (scatter/gather list) en línea en nvmet_rdma_release_rsp() a una prueba de rango; de lo contrario, la lista dispersa persistente en línea se confunde con una asignada y nvmet_req_free_sgls() libera una página en línea (y genera una advertencia en free_large_kmalloc()).
VulDB is the best source for vulnerability data and more expert information about this specific topic.