Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Standalone postmaster binary — a format-neutral local secret
materialization engine that decrypts encrypted inputs at process
launch time, injects them into a child process, and
execvps the target binary. .envinput adapter — wire-compatible with dotenvx-encrypted.envfiles (ECIES/secp256k1 + HKDF-SHA256 + AES-256-GCM).postmaster_bundleJSON container format as a second input adapter.KeyNamingenum (Env, Bundle) for compile-time exhaustive adapter dispatch — zero vtable overhead, controlled adapter set.- Three injection modes:
env(environment variables),files(one-file-per-secret on RAM-backed filesystem),credentials(systemd credentials via postmaster daemon). - Four key sources: systemd credentials (
LoadCredential=), files (.env.keyson disk), macOS keychain, environment variables. postmaster exec --checkfor config shape validation (CI).postmaster setup --recheckfor runtime key source verification (host).postmaster setupinteractive command — idempotent, creates keys directory, verifies permissions, optionally seeds keychain (macOS).postmaster cleanup --config <exec.json>subcommand for plaintext secret file removal. Wired toExecStopPostin systemd.--verify-keysflag onexecfor stale key detection after rotation.OFlags::CLOEXECon allrustix::fs::opencall sites.- RAM backing verification via
hdiutil infoon macOS. - Pre-execvp zeroization of
KeyRingandResolvedvalues. - Symlink rejection at every secret path:
O_NOFOLLOW,fstat,symlink_metadata,fchmodon socket fd. - External binary verification:
codesign -von macOS, root-owned check on Linux. - Input validation: NUL byte rejection, path traversal rejection, identifier validation, no shell expansion invariant.
- Threat model documentation covering memory residency, hardening inheritance across execvp, and the 5-stage secret pipeline.
verify_key_freshnessusesKeyNaming::Env.metadata_prefix().- Two security audits conducted (provider handoff + destination handoff), all findings fixed.
- Memory hardening audit conducted, all findings fixed.