Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en kernel de Linux (CVE-2023-52910)

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
21/08/2024
Última modificación:
12/09/2024

Descripción

En el kernel de Linux, se resolvió la siguiente vulnerabilidad: iommu/iova: soluciona el problema de desbordamiento de alloc iova. En __alloc_and_insert_iova_range, hay un problema que retry_pfn se desborda. El valor de iovad->anchor.pfn_hi es ~0UL, luego, cuando iovad->cached_node es iovad->anchor, curr_iova->pfn_hi + 1 se desbordará. Como resultado, si se ejecuta la lógica de reintento, low_pfn se actualiza a 0 y luego new_pfn < low_pfn devuelve falso para que la asignación sea exitosa. Este problema ocurre en las dos situaciones siguientes: 1. El tamaño del primer iova excede el tamaño del dominio. Al inicializar el dominio iova, iovad->cached_node se asigna como iovad->anchor. Por ejemplo, el tamaño del dominio iova es 10 M, start_pfn es 0x1_F000_0000 y el tamaño de iova asignado por primera vez es 11 M. La siguiente es la información de registro, new->pfn_lo es más pequeño que iovad->cached_node. Registro de ejemplo como sigue: [ 223.798112][T1705487] sh: [name:iova&]__alloc_and_insert_iova_range start_pfn:0x1f0000,retry_pfn:0x0,size:0xb00,limit_pfn:0x1f0a00 [ 223.799590][T1705487] [nombre:iova&]__alloc_and_insert_iova_range éxito start_pfn :0x1f0000,new->pfn_lo:0x1efe00,new->pfn_hi:0x1f08ff 2. El nodo con el valor iova->pfn_lo más grande en el dominio iova se elimina, iovad->cached_node se actualizará a iovad->anchor y luego el tamaño de alloc iova excede el tamaño máximo de iova que se puede asignar en el dominio. Después de juzgar que retry_pfn es menor que limit_pfn, llame a retry_pfn+1 para solucionar el problema de desbordamiento.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (incluyendo) 5.15.89 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 6.1.7 (excluyendo)
cpe:2.3:o:linux:linux_kernel:6.2:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.2:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.2:rc3:*:*:*:*:*:*