# FreeBSD corrige un fallo en libcap_net que dejaba ampliar permisos de red en sandbox Capsicum (CVE-2026-45254)

- **Publicado el:** 2026-05-20
- **Categoría:** Seguridad
- **Página original:** https://linuxgratis.com/articulos/cve-2026-45254-freebsd-libcap-net-capsicum-bypass-red

Un error de lógica en libcap_net trataba una restricción omitida como 'permitir cualquiera', así que una aplicación dentro de un sandbox Capsicum podía ganar permisos de red en vez de perderlos. Qué falla, a quién afecta y cómo parchear.

---

El proyecto FreeBSD publicó el aviso FreeBSD-SA-26:24.cap_net el 20 de mayo de 2026 para corregir CVE-2026-45254, un fallo en `libcap_net` que rompía una de las garantías básicas de Capsicum: que un proceso solo puede recortar sus permisos, nunca ampliarlos.

## Qué es Capsicum y dónde encaja libcap_net

Capsicum es el sistema de aislamiento por capacidades de FreeBSD. Una aplicación entra en "modo capacidad" y a partir de ahí pierde el acceso global al sistema: solo puede operar sobre los descriptores y capacidades que ya tenía. Como dentro de ese modo no se pueden hacer llamadas como `connect()` o resolver nombres directamente, FreeBSD ofrece servicios de Casper (`libcasper`). Uno de ellos es `libcap_net`, que actúa de intermediario para las operaciones de red: la aplicación en sandbox le pide al proceso Casper que resuelva un host o abra una conexión, y este aplica los límites que se hayan configurado.

La idea es que esos límites se pueden estrechar sobre la marcha. Si una app empieza pudiendo resolver nombres y conectar, puede pedir un nuevo límite que solo permita resolver, y a partir de ahí ya no debería poder conectar. Esa restricción progresiva es lo que sostiene el modelo.

## El fallo

Cuando la aplicación pedía un nuevo conjunto de límites, `libcap_net` comparaba la petición con el límite anterior. El problema estaba en cómo trataba las claves ausentes. Si una clave presente en el límite antiguo no aparecía en el nuevo, el código la interpretaba como "permitir cualquiera" en lugar de rechazarla.

El efecto es el contrario al esperado. Omitir una restricción no la dejaba intacta ni la denegaba, sino que la abría del todo. Una aplicación que ya había limitado un subconjunto de operaciones de red podía solicitar un nuevo límite que, lejos de estrechar, ampliaba sus permisos. En la práctica eso permite a código dentro del sandbox saltarse las restricciones de red que el desarrollador creía estar aplicando.

## A quién afecta y gravedad

Afecta a todas las versiones soportadas de FreeBSD, pero solo al software que use `libcap_net`/`libcasper` para mediar el acceso a red dentro de un sandbox Capsicum. El sistema base no incluye programas afectados, así que el riesgo recae en aplicaciones de terceros que hayan adoptado este patrón de aislamiento. FreeBSD clasifica la gravedad como media: no es una escalada a root ni un RCE remoto, sino una elevación de privilegios de red dentro del propio proceso sandbox, condicionada a que la aplicación dependa de `libcap_net` para confinarse.

Está en la misma tanda de avisos de mayo que otros fallos de kernel más serios en FreeBSD, como la [escalada de privilegios vía Linuxulator y LD_PRELOAD](/freebsd-sa-26-30-linuxulator-ld-preload-privesc). Si gestionas servidores FreeBSD, conviene revisar el conjunto entero.

## Mitigación

No hay workaround: la única solución es parchear. Las correcciones salieron el 20 de mayo de 2026 en stable/15 y 15.0-RELEASE-p9, y en stable/14, 14.4-RELEASE-p5 y 14.3-RELEASE-p14.

Para sistemas con `freebsd-update`, basta con actualizar y reiniciar los demonios afectados:

```
freebsd-update fetch
freebsd-update install
```

Si compilas desde fuentes, aplica el parche oficial (`SA-26:24/cap_net.patch`), recompila con `buildworld`/`installworld` y reinicia los procesos que usen `libcap_net`. Más detalles del sistema base en la [ficha de FreeBSD](/freebsd).

## Fuente

- Aviso oficial: [FreeBSD-SA-26:24.cap_net](https://www.freebsd.org/security/advisories/FreeBSD-SA-26:24.cap_net.asc)
- NVD: [CVE-2026-45254](https://nvd.nist.gov/vuln/detail/CVE-2026-45254)
