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

Vulnerabilidad en kernel de Linux (CVE-2025-22015)

Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
08/04/2025
Última modificación:
08/04/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: mm/migrate: arregla la actualización de xarray de shmem durante la migración un folio de shmem puede estar en la caché de página o en la caché de intercambio, pero no al mismo tiempo. Es decir, una vez que está en la caché de intercambio, folio->mapping debe ser NULL y el folio ya no está en una asignación de shmem. En __folio_migrate_mapping(), para determinar el número de entradas de xarray a actualizar, se usa folio_test_swapbacked(), pero eso combina shmem en el caso de la caché de página y shmem en el caso de la caché de intercambio. Lleva a la corrupción de entradas de múltiples índices de xarray, ya que convierte una entrada hermana en una entrada normal durante xas_store() (vea [1] para una reproducción del espacio de usuario). Arréglelo usando solo folio_test_swapcache() para determinar si xarray está almacenando entradas de caché de intercambio o no para elegir el número correcto de entradas de xarray para actualizar. [1] https://lore.kernel.org/linux-mm/Z8idPCkaJW1IChjT@casper.infradead.org/ Nota: En __split_huge_page(), se usan folio_test_anon() y folio_test_swapcache() para obtener el espacio de direcciones de la caché de intercambio, pero esto ignora el folio shmem en el caso de la caché de intercambio. Esto podría provocar la desreferenciación de punteros nulos cuando un folio shmem en la caché de intercambio se divide en __xa_store(), ya que !folio_test_anon() es verdadero y folio->mapping es nulo. Afortunadamente, su llamador, split_huge_page_to_list_to_order(), se detiene antes de tiempo con EBUSY cuando folio->mapping es nulo. Por lo tanto, no es necesario ocuparse de ello aquí.

Impacto