# CVE-2026-46129: doble liberación en Btrfs por un fallo al registrar el kobject en sysfs

- **Publicado el:** 2026-05-28
- **Categoría:** Seguridad
- **Página original:** https://linuxgratis.com/articulos/cve-2026-46129-btrfs-double-free-create-space-info-kernel-linux

Un doble free en la ruta de error de create_space_info() de Btrfs puede corromper la memoria del kernel. Te contamos a quién afecta, su gravedad y cómo parchearlo.

---

CVE-2026-46129 es un fallo de corrupción de memoria en el sistema de ficheros Btrfs del kernel Linux. Se publicó en la NVD el 28 de mayo de 2026 con una puntuación CVSS 3.1 de 7.8 (alta) y el vector `AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H`. En resumen: hace falta acceso local, pero si se dispara, el impacto sobre confidencialidad, integridad y disponibilidad es alto.

## Qué falla exactamente

El problema está en `create_space_info()`, la función que crea las estructuras de información de espacio de Btrfs durante la inicialización del sistema de ficheros. Esa función llama a `btrfs_sysfs_add_space_info_type()`, que a su vez usa `kobject_init_and_add()` para registrar un kobject en sysfs.

Cuando `kobject_init_and_add()` falla, se produce una doble liberación de la misma estructura `space_info`. La cadena es la siguiente:

1. `kobject_init_and_add()` falla y el código invoca `kobject_put(&space_info->kobj)`.
2. Ese `kobject_put()` dispara el callback de release, `space_info_release()`, que ejecuta `kfree(space_info)`. La memoria ya queda liberada.
3. El control vuelve a `create_space_info()`, que ve el error y salta a su etiqueta `out_free`, donde vuelve a llamar a `kfree(space_info)` sobre el puntero ya liberado.

Dos rutas de limpieza distintas creen ser dueñas del mismo objeto. Una lo devuelve al asignador y la otra lo libera por segunda vez. En el kernel, un doble free de este tipo puede degenerar en corrupción del heap, escenarios de use-after-free, un kernel panic o, en el peor de los casos, ejecución de código arbitrario.

## A quién afecta

A cualquier sistema con un kernel Linux que monte o tenga disponible Btrfs. En la práctica esto incluye servidores de almacenamiento, NAS, appliances de copia de seguridad, máquinas virtuales Linux, plataformas de contenedores y entornos de desarrollo donde Btrfs sea el sistema de ficheros. Distribuciones como Fedora y openSUSE lo usan por defecto, así que el alcance no es marginal.

La ventana para disparar el fallo es estrecha: hay que provocar el error de `kobject_init_and_add()` durante la creación de la space_info, lo que depende del comportamiento del asignador, la configuración del kernel y las mitigaciones activas. Por eso la superficie es local y, a fecha de publicación, no hay exploit público ni explotación activa conocida.

## Gravedad real

El 7.8 sitúa este fallo por encima de muchos bugs de Btrfs porque el vector marca impacto alto en las tres dimensiones. Dicho esto, conviene leer el CVSS junto al contexto: requiere privilegios locales (`PR:L`) y no hay vector remoto. No es un fallo para entrar en pánico, pero sí para parchear sin demora en cualquier host multiusuario o que ejecute cargas de terceros.

## Mitigación y parche

La corrección ajusta el contrato de propiedad de la memoria. Para las rutas de error tempranas se mantiene el `kfree(space_info)` directo, pero una vez que `btrfs_sysfs_add_space_info_type()` ya ha llamado a `kobject_put()`, se deja que sea el callback de release del kobject quien gestione la limpieza. Así nadie libera dos veces.

El parche se propagó a varias ramas estables de kernel.org a finales de mayo de 2026. Lo recomendable es actualizar a través del canal de tu distribución o del fabricante del appliance, y verificar el backport en su aviso de seguridad en vez de fiarte solo del número de versión upstream, ya que los distribuidores reescriben la numoración. Tras instalar el kernel parcheado hay que reiniciar para aplicar el cambio. Si no puedes parchear de inmediato, limitar el acceso local de usuarios no confiables reduce la exposición mientras tanto.

## Fuente

- Windows Forum — [CVE-2026-46129 Btrfs double-free fix: Linux kernel patch needed](https://windowsforum.com/threads/cve-2026-46129-btrfs-double-free-fix-linux-kernel-patch-needed.420748/)
- NVD — [CVE-2026-46129](https://nvd.nist.gov/vuln/detail/CVE-2026-46129)
