chore(0005): bump unibus to 0.7.0, close issue 0005 (hardening 2)
Hardening 2 (issue 0005, fases 0005a-0005e) cierra los hallazgos nuevos de la re-auditoría red-team (report 0006): bump de nats-server + toolchain (16 CVEs -> 0 alcanzables), drop de frames sin firma en rooms SignMsgs, limiter global de bytes en vuelo contra el DoS por concurrencia, TLS obligatorio en bind publico, y cableado de la ACL por subject que cierra el wildcard metadata leak. Detalle por fase en el capability growth log del app.md y en el report 0007. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
name: unibus
|
name: unibus
|
||||||
lang: go
|
lang: go
|
||||||
domain: infra
|
domain: infra
|
||||||
version: 0.6.0
|
version: 0.7.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."
|
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]
|
tags: [service, messaging, nats, e2e]
|
||||||
uses_functions:
|
uses_functions:
|
||||||
@@ -154,6 +154,29 @@ agent.<nombre>.{in,out} inbox/outbox de agente LLM (agent.scout.in)
|
|||||||
|
|
||||||
## Capability growth log
|
## Capability growth log
|
||||||
|
|
||||||
|
- v0.7.0 (2026-06-07) — hardening de seguridad 2 (issue 0005, fases 0005a–0005e)
|
||||||
|
que cierra los hallazgos nuevos de la re-auditoría red-team (report 0006) y
|
||||||
|
lleva el veredicto de exposición pública a "sí-con-condiciones". (0005a) Bump de
|
||||||
|
`github.com/nats-io/nats-server/v2` v2.10.22→v2.11.15 y de la toolchain a
|
||||||
|
go1.26.4: `govulncheck ./...` pasa de 16 vulnerabilidades alcanzables (14 del
|
||||||
|
servidor NATS embebido + 2 de la stdlib) a 0. (0005b) `client.processFrame`
|
||||||
|
ahora descarta cualquier frame sin firma en una room `SignMsgs` (antes verificaba
|
||||||
|
solo si la firma venía presente, lo que permitía suplantar `Sender` con
|
||||||
|
`Sig==nil`). (0005c) Nuevo limiter global de bytes en vuelo
|
||||||
|
(`pkg/membership.inflightLimiter`) que acota la memoria agregada que el control
|
||||||
|
plane bufferiza bajo concurrencia (el límite por-request y el rate-limit por-IP
|
||||||
|
no acotaban el total): un flood concurrente multi-IP se descarta con 503 en vez
|
||||||
|
de crecer sin techo (el RSS deja de escalar con N). (0005d) El guard de arranque
|
||||||
|
`validateBootConfig` ahora exige `--tls-cert/--tls-key` en bind no-loopback (un
|
||||||
|
control plane público sin TLS servía metadata en claro). (0005e) Se cablea por
|
||||||
|
fin en `membershipd` la ACL por subject que ya existía huérfana desde 0003e
|
||||||
|
(`busauth.NewNkeyAuthenticatorACL` + nuevo adaptador `busauth.PermissionsFromSubjects`
|
||||||
|
sobre `membership.SubjectACLFor`): un registrado no-miembro ya no puede
|
||||||
|
`Subscribe(">")` y captar los subjects/advisories de rooms ajenas. Residuales
|
||||||
|
documentados: `$JS.API.>` sigue compartido (cierre completo = NATS accounts por
|
||||||
|
identidad, diferido) y los clientes deben `RefreshSession` tras cambios de
|
||||||
|
membresía (chat/worker aún no lo hacen). El comportamiento de un solo nodo no
|
||||||
|
cambia y master sigue verde.
|
||||||
- v0.6.0 (2026-06-07) — descentralización / alta disponibilidad (issue 0003,
|
- v0.6.0 (2026-06-07) — descentralización / alta disponibilidad (issue 0003,
|
||||||
fases 0003a–0003e), report 0006. El servidor NATS embebido gana soporte de
|
fases 0003a–0003e), report 0006. El servidor NATS embebido gana soporte de
|
||||||
cluster con routes autenticadas (secreto de cluster) y TLS mutuo de nodo
|
cluster con routes autenticadas (secreto de cluster) y TLS mutuo de nodo
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
---
|
---
|
||||||
issue: 0005
|
issue: 0005
|
||||||
title: Hardening 2 — CVEs, spoof por firma omitida, DoS por concurrencia, TLS forzado (re-auditoría)
|
title: Hardening 2 — CVEs, spoof por firma omitida, DoS por concurrencia, TLS forzado (re-auditoría)
|
||||||
status: spec
|
status: done
|
||||||
created: 2026-06-07
|
created: 2026-06-07
|
||||||
|
completed: 2026-06-07
|
||||||
domain: security
|
domain: security
|
||||||
scope: unibus (go.mod, pkg/client, pkg/membership/server.go, cmd/membershipd/config.go, pkg/embeddednats, pkg/blobstore)
|
scope: unibus (go.mod, pkg/client, pkg/membership/server.go, cmd/membershipd/config.go, pkg/embeddednats, pkg/blobstore)
|
||||||
depends_on: 0001, 0004 (cierra los hallazgos NUEVOS de la re-auditoría sobre lo entregado)
|
depends_on: 0001, 0004 (cierra los hallazgos NUEVOS de la re-auditoría sobre lo entregado)
|
||||||
|
|||||||
Reference in New Issue
Block a user