UNPKG

@sebastienrousseau/dotfiles

Version:

The Trusted Shell Platform — Universal dotfiles managed by Chezmoi. Features Bash & Zsh for macOS, Linux & WSL. Rust modern tooling & enterprise-grade security.

131 lines (97 loc) 4.16 kB
# Encrypted Security Disclosure — Reporter Workflow This document is for **external security researchers** who have found an issue in this repository and want to report it without exposing sensitive details (PII, exploit chains, internal infrastructure) in transit or at rest on third-party servers. If your report doesn't need encryption, please use [GitHub Security Advisories](https://github.com/sebastienrousseau/dotfiles/security/advisories) instead — it's faster and the GitHub-side audit trail is stronger. ## 1. Fetch the maintainer's public key ```sh # Web Key Directory is the modern recommendation. gpg --auto-key-locate clear,wkd \ --locate-keys security@sebastienrousseau.com ``` If WKD fails (offline keyserver, corporate proxy), download directly: ```sh curl -fsSL \ https://sebastienrousseau.com/.well-known/openpgpkey/hu/qpzqfwauiwxnu1xrf5h47bunsho44p6f \ | gpg --import ``` ## 2. Verify the fingerprint **Do not skip this step.** A MITM attacker can serve their own key. ```sh gpg --fingerprint security@sebastienrousseau.com ``` The fingerprint must match the one published in [`.github/SECURITY.md`](../../.github/SECURITY.md). Cross-verify against the SSH signing key in `dot_config/git/allowed_signers.tmpl` — the maintainer signs commits with the same identity, so both fingerprints derive from the same identity claim. If the two fingerprints don't match, **stop**. Open a private [Security Advisory](https://github.com/sebastienrousseau/dotfiles/security/advisories/new) and ask the maintainer to confirm the key out-of-band. ## 3. Encrypt your report ```sh cat <<EOF | gpg --encrypt --armor \ --recipient security@sebastienrousseau.com \ --output disclosure.asc Subject: <short description of the issue> <full details — repro steps, affected versions, exploit, screenshots referenced by base64-encoded attachments, contact info for follow-up> EOF ``` Verify the output is an ASCII-armored OpenPGP message before sending: ```sh head -1 disclosure.asc # Expected: -----BEGIN PGP MESSAGE----- ``` ## 4. Send Attach `disclosure.asc` to an email to **<security@sebastienrousseau.com>**. Subject line: `[dotfiles] <severity>: <short description>` (no encryption-sensitive content in the subject; mail relays log subjects in plain text). ## 5. Acknowledgement You should receive an acknowledgement within the SLA in [`.github/SECURITY.md`](../../.github/SECURITY.md): | Severity | Initial response | |---|---| | Critical | 24 hours | | High | 72 hours | | Medium | 5 business days | | Low | 10 business days | The acknowledgement will be signed with the same key you encrypted to. Verify the signature: ```sh gpg --verify response.asc ``` If you don't receive an acknowledgement in the SLA window, or the acknowledgement signature doesn't verify, escalate by: 1. Opening a private GitHub Security Advisory. 2. DM-ing the maintainer on Mastodon: `@sebastienrousseau@hachyderm.io`. ## 6. After disclosure The maintainer commits to: - A fix timeline communicated within the SLA. - A CVE assignment when severity ≥ Medium and the issue affects published releases (npm package, release tarballs). - Public credit at fix time in the release notes (unless you request anonymity at report time). - A backport to any actively-supported release line listed in `.github/SECURITY.md`. ## What NOT to do - Don't post details in a public issue, even a "I found a bug, ping me for details" placeholder — every public reference is a tip-off to attackers monitoring the repo. - Don't disclose to third parties (other dotfile maintainers, security mailing lists, blog posts) before the embargo lifts. - Don't access data or systems you don't own. - Don't run automated scans against `*.sebastienrousseau.com` that exceed normal browser-like traffic. ## See also - [`.github/SECURITY.md`](../../.github/SECURITY.md) — policy overview + fingerprint. - [`docs/security/KEY_ROTATION.md`](KEY_ROTATION.md) — schedule for when the disclosure key is rotated. - [`docs/security/AUDIT_BYPASS.md`](AUDIT_BYPASS.md) — separate flow for the pre-push audit bypass (not for disclosure).