Qué protege Styx, dónde están las fronteras de confianza y cómo se reparte la seguridad entre data plane, control plane y comunicaciones.
Implementado en parte. El diseño es de
dec-0117,dec-0118ydec-0119, que se auditan juntos. Cuánto de cada invariante está verificado es estado de gate: se lee en la vista generada detrack/byte-runtime/secy detrack/identity/sec, nunca en esta página.
Seguridad por diseño, con defensa en profundidad: un bug que no escale tiene que ser imposible de escalar. Tres decisiones, que forman un único modelo de amenazas, lo reparten:
| Decisión | Ámbito |
|---|---|
dec-0117 | Data plane Zig: daemon, parsers, libav, ficheros, contenedores |
dec-0118 | Control plane TS y web: identidad, sesiones, autorización, CSRF, CSP, errores, auditoría |
dec-0119 | Comunicaciones: todo lo que cruza un proceso pasa por spire |
Cada una lleva su STRIDE por frontera y, por cada invariante, un test que falla si alguien lo rompe.
/proc): el daemon tiene a la vez ficheros y red, así que es el componente cuya
integridad más importa.playback-svc; las de identidad,
identity-svc. El daemon sólo guarda claves públicas.| Lado no confiable | Frontera |
|---|---|
| Todo lo que llega por la red al daemon | cliente ↔ daemon (QUIC, WebTransport, MoQT, HTTP/3) |
| El proceso local hasta que se autentica | control plane ↔ daemon por el socket de control |
| Respuestas y bytes remotos | daemon ↔ fuentes remotas |
| El contenido de un fichero, aunque sea local | bytes de un fichero ↔ parsers (MP4, Matroska, subtítulos) |
| Según el nivel de confianza del plugin | plugins ↔ núcleo |
| La entrada que libav interpreta | daemon ↔ libav |
| Symlinks, renombrados y montajes | daemon ↔ sistema de ficheros |
| El propio proceso si ya está comprometido | contenedor ↔ host |
| El broker y los demás clientes del bus | daemon ↔ NATS |
| El navegador, su contenido remoto (metadatos, imágenes, subtítulos) | navegador ↔ BFF y contenido remoto ↔ DOM |
El detalle por frontera (amenaza y mitigación) está en dec-0117 §3 y dec-0118 §1.
zkit.safety impone los invariantes: handles con generación,
presupuestos, raíces fd-relativas, lectores acotados. Ver data plane.zig build audit:safety
sobre el AST de Zig, check:no-media-spawn, tests de arquitectura sobre imports del bus.
Cada guarda demuestra su rama roja con un mutante.@styx/authz) evalúa can(principal, acción, recurso).
Ver sesiones y BFF y comunicaciones.La seguridad no se da por cerrada al escribir el diseño. Una pasada AppSec repite un ciclo por área (transportes Zig, núcleo Zig, SDK, servicios TS, web, despliegue y cadena de suministro):
fichero:línea, sin editar;El criterio es «hasta que una pasada salga seca», y los informes dicen con honestidad cuándo no
ha ocurrido. El informe de cada pasada vive en docs/reviews/, y la evidencia por nodo en
docs/track/<nodo>/sec/evidence/.