CVE-2026-43472 in Linuxinformación

Resumen

por VulDB • 2026-05-21

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

unshare: corregir el manejo de unshare_fs()

Existe un caso límite poco agradable en unshare(2), cuando tenemos CLONE_NEWNS en las banderas y current->fs no había sido compartido en absoluto; en ese caso, copy_mnt_ns() recibe current->fs en lugar de una copia privada, lo que provoca problemas interesantes en la prueba de corrección.

> Supongo que si "privado" significa fs->users == 1, la condición aún podría ser verdadera.

Desafortunadamente, es peor que solo una prueba de corrección enrevesada. Considere el caso en el que tenemos CLONE_NEWCGROUP además de CLONE_NEWNS (y current->fs->users == 1).

Pasamos current->fs a copy_mnt_ns(), está bien. Supongamos que tiene éxito y cambia current->fs->{pwd,root} a las ubicaciones correspondientes en el nuevo namespace. Ahora procedemos a copy_cgroup_ns(), que falla (por ejemplo, con -ENOMEM). Llamamos a put_mnt_ns() en el namespace creado por copy_mnt_ns(), se destruye y su árbol de montaje se disuelve, pero... current->fs->root y current->fs->pwd quedan apuntando a montajes ahora desconectados.

Los están manteniendo activos, por lo que no es un Use-After-Free (UAF), pero deja al proceso que llama con unshare(2) fallando con -ENOMEM y dejándolo con pwd y root en montajes aislados desconectados. Esta última parte es claramente un error.

Hay otras complicaciones relacionadas con este lío (carreras con pivot_root(), incluyendo la que existe entre pivot_root() y fork(), de todas las cosas), pero esta es fácil de aislar y corregir: tratar CLONE_NEWNS como "asignar un nuevo fs_struct incluso si no había sido compartido en primer lugar". Claro, podríamos optar por algo como "si tanto CLONE_NEWNS *como* una de las cosas que podrían fallar después de la llamada a copy_mnt_ns() en create_new_namespaces() están establecidas, forzar la asignación de un nuevo fs_struct", pero mantengámoslo simple: el costo de copy_fs_struct() es trivial.

Otro beneficio es que copy_mnt_ns() con CLONE_NEWNS *siempre* recibe un fs_struct recién asignado, aún por adjuntar a cualquier cosa. Eso simplifica seriamente el análisis...

Por si acaso, ese bug ha estado presente desde la introducción de unshare(2) ;-/

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Reservar

2026-05-01

Divulgación

2026-05-08

Moderación

aceptado

Artículo

VDB-362320

CPE

listo

EPSS

0.00013

KEV

no

Actividades

muy bajo

Fuentes

Do you know our Splunk app?

Download it now for free!