Security
How ZeroFare protects credentials and traffic.
A factual summary of the controls in the codebase and the running deployment. For the engineering detail, see Security in depth in the docs.
Credential handling
- Gateway API keys: peppered scrypt hashes (N=216); management credentials: salted SHA-256 digests.
- Plaintext secrets are printed exactly once at creation and never written to disk — the on-VM seed file carries digests only.
- Verification compares digests; there is no decryption path anywhere in the codebase.
Network posture
-
Every service binds
127.0.0.1; the only public surface is a hardened TLS reverse proxy (Caddy, auto-HTTPS via Let's Encrypt). - Fail-closed auth: missing credentials and unknown routes return identical terse 401s — nothing can be enumerated unauthenticated.
- Two independent firewall layers (host iptables + cloud security list) gate all inbound traffic.
- The local edge binds loopback by default and refuses non-local hosts by schema — it cannot be accidentally exposed.
Container hardening
-
Read-only root filesystems; all Linux capabilities dropped;
no-new-privileges; non-root user (65532). -
Container images pinned by digest;
.dockerignorekeeps secrets, git history, and dependencies out of build contexts. - Writable paths are limited to explicitly mounted state and tmpfs scratch.
Verification, not assurance-theater
- Dedicated tenant-isolation test suite (cross-tenant access attempts must fail).
- Contract tests against the frozen OpenAPI snapshot for every management route.
- Load tests with latency gates; property-based tests on console components.
Scope statement: the early-access deployment is a single self-managed
VM. We do not claim SOC 2 / ISO 27001 / HIPAA compliance, and the enterprise assurances
(SLA, audit export) attach to the paid hosted product in
Phase 3.
Reporting a vulnerability
Email security@zerofare.dev with details and reproduction steps. We ask for responsible disclosure: give us a reasonable window to fix before public disclosure, and never test against tenants you don't own.