diff --git a/docs/17-cierres-frontera.md b/docs/17-cierres-frontera.md index 85eaa216..ebffad19 100644 --- a/docs/17-cierres-frontera.md +++ b/docs/17-cierres-frontera.md @@ -65,6 +65,25 @@ convierte en política atestada sin inventar formato. Filosofía de referencia: wawa "capacidad = frontera física, no tabla de permisos" (WAWA.md §4.2). Lado runtime: `pacha-core` / `sandokan-lifecycle`. +**La lección casper (plan-freebsd T2.1–T2.2).** Capsicum, más puro que Landlock, terminó +necesitando demonios auxiliares (`casper`) porque hay una clase — *servicios del mundo* — +que no son paths y no caben en ninguna jaula por-fichero. La clausura de build **no +contiene esa clase** (builds offline por `--unshare-all`): derivarla a ciegas produce +binarios que revientan en el primer `getaddrinfo`. Política runtime = clausura de build +**+ clases de servicio declaradas por nombre** (D3 aplica en runtime: no se ensancha en +silencio). El mapa clase→permiso en musl cabe aquí porque musl no tiene nsswitch ni +dlopen de módulos NSS — la mitad de por qué casper existe no aplica: + +| clase | permiso concreto (musl) | +|---|---| +| `dns` | leer `/etc/resolv.conf` + `/etc/hosts`, socket UDP/TCP :53 | +| `tls-certs` | leer `/etc/ssl/certs/` | +| `random` | `getrandom(2)` — ni path necesita | +| `locale` / `tz` | leer `/etc/TZ`, `/usr/share/zoneinfo/` (locale va embebido en musl) | +| `syslog` | socket unix `/dev/log` | + +La clase viaja como campo de la `ConcesionCapacidad` — sin formato nuevo. + ### 4. CVE por grafo `hammer affected CVE-X` exacto (grafo fuente→artefacto→instalado) + frontera mínima de