Skip to content
4 changes: 4 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,10 @@ gRPC defaults to TCP port `8889`, with optional Unix sockets and bearer/HMAC aut

Current TCP/UDS, TTL/hop-limit, bearer/HMAC, and read/admin protections, with defaults, tradeoffs, recommended deployment profiles, secret handling, and verification examples. Authentication is off by default; native TLS and the connection/accept-rate limits proposed in the earlier design are not implemented.

### [Security advisory: `ConfigService.Set` filesystem writes](security-hardening/security-vulnerability-configservice-set-fs-write.md)

`Set` re-executes the daemon with an attacker-chosen config and, absent path validation, becomes a root file-write primitive (`file:` destinations, `capture_path`, `baseline_file`, `ipmeta_cache_path`, unix listeners). The advisory maps every primitive, documents the container deployment and its permission model (runtime settings → Linux primitives, what `NET_ADMIN`+`SYS_ADMIN` really grant, what is restricted/filtered), checks the classic container-escape path idioms target-by-target, and lays out the layered fix: build-time elimination, protovalidate path rules, a runtime path policy with frozen fields, a universal validating interceptor, Landlock self-confinement, a chrooted state-writer process split, and privilege brokers that take the capabilities and `docker.sock` out of the collector. The [hardening plan](security-hardening/plan-configservice-set-hardening.md) tracks the workstreams; the [implementation plan](security-hardening/implementation-plan.md) sequences the phases and PRs; the phase drill-downs go deep: [phase 1](security-hardening/phase-1-code-hardening.md) (build tags, proto validators, path policy, interceptor, audit, CI gates, a startup confinement check), [phase 2](security-hardening/phase-2-kernel-confinement.md) (Landlock self-confinement, full test matrices), [phase 3](security-hardening/phase-3-writer-split.md) (the writer-process split with its path-free proto protocol and the complete write inventory), [phase 4](security-hardening/phase-4-egress-fleet-lockdown.md) (egress pinning, escape-hatch removal, v1.x retirement, standing CI gates), and [phase 5](security-hardening/phase-5-privilege-brokers.md) (netlink and Docker brokers with typed, validated APIs; per-process seccomp and AppArmor profiles).

### [Observability](observability.md)
Prometheus metrics, Go `pprof` endpoints, optional Pyroscope continuous profiling, and the startup capability check that explains exactly which Linux capabilities are required.

Expand Down
184 changes: 184 additions & 0 deletions docs/security-hardening/implementation-plan.md

Large diffs are not rendered by default.

404 changes: 404 additions & 0 deletions docs/security-hardening/phase-1-code-hardening.md

Large diffs are not rendered by default.

267 changes: 267 additions & 0 deletions docs/security-hardening/phase-2-kernel-confinement.md

Large diffs are not rendered by default.

390 changes: 390 additions & 0 deletions docs/security-hardening/phase-3-writer-split.md

Large diffs are not rendered by default.

183 changes: 183 additions & 0 deletions docs/security-hardening/phase-4-egress-fleet-lockdown.md

Large diffs are not rendered by default.

598 changes: 598 additions & 0 deletions docs/security-hardening/phase-5-privilege-brokers.md

Large diffs are not rendered by default.

378 changes: 378 additions & 0 deletions docs/security-hardening/plan-configservice-set-hardening.md

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Loading