Vulnerabilidad en kernel de Linux (CVE-2025-37999)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
29/05/2025
Última modificación:
14/11/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: fs/erofs/fileio: llamar a erofs_onlinefolio_split() después de bio_add_folio(). Si bio_add_folio() falla (porque está lleno), erofs_fileio_scan_folio() debe enviar la solicitud de E/S mediante erofs_fileio_rq_submit() y asignar una nueva solicitud de E/S con un `struct bio` vacío. Luego, vuelve a intentar la llamada a bio_add_folio(). Sin embargo, en este punto, ya se ha llamado a erofs_onlinefolio_split(), lo que incrementa `folio->private`; el reintento llamará a erofs_onlinefolio_split() de nuevo, pero nunca habrá una llamada erofs_onlinefolio_end() coincidente. Esto deja el folio bloqueado para siempre y todos los que esperan quedarán atascados en folio_wait_bit_common(). Este error se añadió con el commit ce63cb62d794 ("erofs: compatibilidad con inodos no codificados para fileio"), pero era prácticamente imposible de solucionar porque había espacio para 256 folios en la estructura `struct bio`, hasta el commit 9f74ae8c9ac9 ("erofs: acortar bvecs[] para montajes con respaldo de archivo"), que redujo la capacidad del array a 16 folios. Ahora era fácil activar el error invocando manualmente la lectura anticipada desde el espacio de usuario, por ejemplo: posix_fadvise(fd, 0, st.st_size, POSIX_FADV_WILLNEED); Esto debería solucionarse invocando erofs_onlinefolio_split() solo después de que bio_add_folio() se haya ejecutado correctamente. Esto es seguro: las finalizaciones asincrónicas que invocan erofs_onlinefolio_end() no desbloquearán el folio porque erofs_fileio_scan_folio() todavía contiene una referencia que erofs_onlinefolio_end() liberará al final.
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.12 (incluyendo) | 6.12.29 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (incluyendo) | 6.14.7 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:6.15:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.15:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.15:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.15:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.15:rc5:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página



