← Volver a artículos
Seguridad· 3 min de lectura

CVE-2026-45250: un desbordamiento de pila en setcred(2) abre la puerta a root en FreeBSD

El proyecto FreeBSD publicó el aviso FreeBSD-SA-26:18.setcred para corregir CVE-2026-45250, un fallo de seguridad de memoria en la llamada al sistema setcred(2). La gravedad es alta, con CVSS 7.8, y el problema es de los que dan miedo precisamente por lo banal de su causa: el kernel confiaba en un dato del usuario sin comprobar su tamaño antes de copiarlo.

Qué es setcred(2) y dónde está el fallo

setcred(2) es una llamada relativamente reciente en FreeBSD que permite a un proceso ajustar de una sola vez varios elementos de sus credenciales (UID, GID, lista de grupos suplementarios, etc.). Entre esos datos viaja una lista de grupos suplementarios que entrega el espacio de usuario.

El error está en cómo el kernel manejaba esa lista. Copiaba los grupos suministrados por el usuario dentro de un buffer de pila de tamaño fijo del propio kernel antes de validar su longitud. Como la comprobación de límites llegaba después de la escritura, un proceso podía pasar una lista más larga de lo que cabe en ese buffer y desbordar la pila del kernel. Ese es el patrón clásico de stack buffer overflow, solo que aquí ocurre en el contexto más sensible posible.

A quién afecta y por qué importa

El fallo está presente en todas las versiones soportadas: 14.3-RELEASE, 14.4-RELEASE y 15.0-RELEASE, además de las ramas stable/14 y stable/15. Cualquier sistema que ejecute uno de esos kernels es vulnerable mientras no se aplique el parche.

Lo serio es el modelo de ataque. No hace falta tener privilegios para invocar setcred(2), así que un usuario local sin permisos especiales puede disparar el desbordamiento. Y al producirse dentro del kernel, no se queda en un simple cierre del proceso: un atacante con la habilidad suficiente puede manipular la pila para ejecutar código arbitrario en contexto de kernel y, con ello, escalar a root. En servidores compartidos, sistemas con cuentas de usuario poco fiables o entornos multiusuario, eso significa control total de la máquina a partir de una cuenta corriente.

No consta explotación activa en el momento de la publicación, pero un PoC para este tipo de fallo no es difícil de construir, así que conviene no esperar.

Cómo protegerse

FreeBSD ya tiene los parches publicados. Las ramas stable se corrigieron el 6 de enero de 2026 y las ramas release el 20 de mayo de 2026. Tienes varias rutas según cómo gestiones tu sistema:

  • Con paquetes del sistema base: pkg upgrade -r FreeBSD-base y reiniciar.
  • Con freebsd-update: freebsd-update fetch && freebsd-update install y reiniciar.
  • Desde fuentes: descargar el parche de https://security.FreeBSD.org/patches/SA-26:18/, verificar la firma con gpg, aplicarlo con patch y recompilar el kernel.

En los tres casos el reinicio es obligatorio, porque la corrección está en el kernel y no surte efecto hasta que arrancas con el nuevo. Si administras varias máquinas FreeBSD, prioriza las que tengan usuarios sin confianza con acceso de shell: ahí el riesgo es inmediato.

Si quieres repasar otros fallos recientes que afectan a la seguridad de FreeBSD, tienes el caso de la fuga de descriptores en blocklistd.

Fuente