diff --git a/app.md b/app.md index 07aa52a..e13fbe2 100644 --- a/app.md +++ b/app.md @@ -2,7 +2,7 @@ name: unibus lang: go domain: infra -version: 0.4.0 +version: 0.5.0 description: "Bus de mensajería unificado sobre NATS+JetStream con cifrado E2E por room (megolm/olm reducido): service de membresía/claves, librería cliente y peers demo." tags: [service, messaging, nats, e2e] uses_functions: @@ -154,6 +154,19 @@ agent..{in,out} inbox/outbox de agente LLM (agent.scout.in) ## Capability growth log +- v0.5.0 (2026-06-07) — hardening de seguridad (issue 0004) que cierra los + hallazgos de la auditoría red-team (report 0004) y lleva el veredicto de + exposición pública de "NO" a "sí-con-condiciones". Anti-DoS pre-auth + (`http.MaxBytesReader` por ruta + rechazo por `Content-Length` + rate-limit + por IP + `MaxHeaderBytes`); guard de fail-open que prohíbe arrancar con bind + público o TLS sin `--bus-auth enforce`; autorización por pertenencia en los GET + de room (metadata y clave sellada solo para miembros / el propio endpoint); + rooms cleartext deshabilitadas en bind público (contenido siempre E2E, mínimo + defensivo del data plane mientras la ACL por subject llega con 0003); TLS en el + control plane HTTP con la CA propia y cliente que exige `https` cuando hay CA; + y los medios H6/H7/H12 (owner ligado al firmante, `IsAuthorized` antes del + nonce-cache con poda O(expired) + cap, errores genéricos al cliente). Cada + hallazgo lleva su test adversarial `TestAudit_*` portado como regresión. - v0.4.0 (2026-06-07) — descubrimiento de rooms: `GET /members/{endpoint}/rooms` lista las rooms de un endpoint con su metadata y rol, y `client.ListMyRooms()` lo consume. El control plane es pull (no hay push de invitaciones), así que un diff --git a/dev/issues/0004-security-hardening.md b/dev/issues/0004-security-hardening.md index 46da6e4..84dac34 100644 --- a/dev/issues/0004-security-hardening.md +++ b/dev/issues/0004-security-hardening.md @@ -1,8 +1,10 @@ --- issue: 0004 title: Hardening de seguridad — autorización, anti-DoS y confidencialidad antes de exponer público -status: spec +status: done created: 2026-06-07 +completed: 2026-06-07 +report: projects/message_bus/reports/0005-2026-06-07-unibus-security-hardening.md domain: security scope: unibus (pkg/membership/server.go, auth.go, pkg/embeddednats, pkg/client, cmd/membershipd, deploy/tls) depends_on: 0001 (cierra los gaps que la auditoría 0004 encontró sobre lo entregado en 0001)