Security
Security Release Checklist
Use this checklist before cutting any new release (e.g., v0.x.x) to ensure supply-chain integrity.
1. Supply Chain & Installer
- Pinned Version: Confirm the default
local version="v…"ininstall.sh(theversionit pinsVERSIONto) matches the release tag. - Docs Sync: Ensure the
README.mdinstaller URL and SHA-256 point to the new release asset (notmain); see INSTALL_VERIFICATION.md. - Clean Build: Verify
install.shdoes not curl random scripts from third parties without pinning. - SOUP Register: Review SOUP_REGISTER.md and confirm all active external components have an owner and validation path.
2. Secrets & Leak Prevention
- SSH Keys: Scan
defaults/private_dot_ssh/to ensure no private keys (id_rsa,id_ed25519) are committed. - Env Vars: Check for hardcoded API tokens in
defaults/dot_config/(useageencryption or environment variables instead). - Git History: Run
gitleaks detect --config config/gitleaks.toml(or similar) to scan for accidental commits of credentials.
3. Platform Safety
- WSL Check: Verify
install.shdetects WSL and does not try to install systemd services or macOS defaults. - Root usage: Ensure no script requires
sudounnecessarily (Principle of Least Privilege).
4. Toolchain
- Binary Integrity: Check that
defaults/dot_local/bin/scripts are pure shell/executable and match expected checksums (no binary blobs). - Dependency Scan: Run
npm auditindefaults/dot_local/share/dot-mcp/node/(the rootpackage.jsonhas no lockfile, sonpm auditcannot run there) andcargo auditinlib/wasm-tools/.
5. MCP (Model Context Protocol) Hardening
- Launcher Policy: Verify
dot mcp checkreports only allowlisted launchers (npx,node,uvx, or binaries under~/.local/share/dot-mcp/). - Filesystem Scope: Ensure no MCP server has broad access (
/,/home,/Users). - Default Profile: Confirm only the
strict-localserver set is enabled by default. - Token Validation: Confirm required API tokens are set (
GITHUB_TOKEN,BRAVE_API_KEY). - Arg Policy: No wildcard (
*) or--unsafearguments in MCP server configs. - Env Placeholders: All
${VAR}references in MCP config have corresponding environment variables.
Run dot mcp check --strict --json to validate all MCP server configurations and capture an audit artifact.
6. Release Attestation
- SBOM Generation: Verify
dotfiles-sbom.spdx.jsonis generated in release workflow. - Attestation Signing: Confirm
actions/attest-build-provenancesigns the release artifacts. - Attestation Verification: Verify with
gh attestation verify <artifact> --repo sebastienrousseau/dotfiles. - Automation Commits: Confirm the latest bot commits here, on the Homebrew tap and on the Scoop bucket show as verified (
gh api repos/<repo>/commits/<sha> --jq .commit.verification).
7. Final Verification
- Docker Test: Run
tests/test-docker.sh(buildstests/Dockerfile.test) to verify clean install. - Doctor: Run
dot doctorlocally. - MCP Check: Run
dot mcp checkto verify MCP configuration.