A fresh database, closed by default
Secure Raven moved to a brand-new database built from its migrations. The rebuild came with a security pass across database privileges, request signing, accounts and the audit log.
Database
- Every migration now runs on a brand-new database.
- Closed by default: the public key cannot run functions or read tables in the public schema, and privileged functions are server-only.
- The cross-tenant isolation tests now check database privileges too.
Signing
- Probe and customer API requests are signed with Ed25519. Secure Raven stores only public keys, and unsigned or shared-secret requests are refused.
- The Supabase probe, the Web Shield adapter and the network probe sign every request.
- Revoking an API key is final.
Accounts
- Removing an authenticator needs an unused recovery code. Recovery codes are stored as keyed hashes.
- Links in account emails keep their token out of server logs.
- Passwords need at least 12 characters. Resetting the password of an account with an authenticator asks for a code from it.
Audit log and keys
- The audit log keeps only allowlisted fields, and the hash chain covers every field it stores.
- IP addresses are kept as keyed hashes, never raw, and only owners and admins can read the audit log.
- The credential encryption key is never read from the database, and the step-up and signing keys no longer fall back to it or to each other.
Contact
- The security, privacy and support addresses moved to secureraven.app, and /.well-known/security.txt publishes the security contact.
SourcePR #33 · 1338b39