tenseleyflow/shithub / 5272836

Browse files

S38: SECURITY.md — finalize disclosure mailbox + severity SLOs

Authored by espadonne
SHA
52728361581eddf5078c8eb521058a0657beac53
Parents
60d6ab2
Tree
2f11d32

1 changed file

StatusFile+-
M SECURITY.md 71 21
SECURITY.mdmodified
@@ -2,32 +2,82 @@
22
 
33
 ## Reporting a vulnerability
44
 
5
-shithub is pre-launch. The project does not yet have a dedicated security mailbox. For now, please open a private channel of communication with the maintainer (contact via GitHub) before disclosing publicly.
5
+Email **`security@shithub.example`**. PGP-encrypt the report
6
+using the key fingerprint published at
7
+`https://shithub.example/.well-known/pgp-key.asc` if your finding
8
+is sensitive.
69
 
7
-Once shithub launches at its public domain, this policy will be updated with:
10
+The mailbox auto-acknowledges receipt within minutes. A human
11
+response (initial assessment + next steps) follows within
12
+**72 hours**.
813
 
9
-- A dedicated `security@<domain>` mailbox
10
-- A PGP public key for sensitive reports
11
-- A response-time SLO (target: 72 hours initial acknowledgement)
12
-- A scope statement covering the hosted instance plus the self-hosted code
13
-- A coordinated-disclosure timeline
14
+Please **do not** file public issues for security findings.
15
+Coordinated disclosure is the norm; we will credit you in the
16
+hall of fame on resolution unless you ask not to be named.
1417
 
15
-## Out of scope (pre-launch)
18
+## Scope
1619
 
17
-- Findings against unreleased / pre-launch builds in development environments
18
-- Issues that require a foothold the maintainer's machine to exploit
19
-- Theoretical findings without a working proof of concept
20
+In scope:
2021
 
21
-## In scope (once launched)
22
+- The hosted shithub instance (`shithub.example`).
23
+- The shithub source as published on GitHub
24
+  (`github.com/tenseleyFlow/shithub`), exploited against any
25
+  reasonably-deployed self-hosted instance running an unmodified
26
+  release tag.
2227
 
23
-- Authentication / authorization bypasses
24
-- Server-side request forgery
25
-- Code injection (SQL, template, command, etc.)
26
-- Cross-site scripting and CSRF
27
-- Insecure cryptographic practices
28
-- Resource exhaustion / denial-of-service vectors
29
-- Information disclosure of private repo content
28
+Out of scope:
3029
 
31
-## License
30
+- Findings against third-party services we depend on
31
+  (DigitalOcean, Postmark, Let's Encrypt). Report those to the
32
+  vendor.
33
+- Misconfiguration of a self-hosted instance (e.g., operator
34
+  exposed `/metrics` without auth) — unless the misconfiguration
35
+  is the *default* of a current release.
36
+- Rate-limit-bypass via heroic distributed-IP infrastructure —
37
+  outside the threat model
38
+  (`docs/internal/threat-model.md`).
39
+- Issues that require physical access to the server.
40
+- DoS via resource exhaustion that requires sustained heavy
41
+  traffic from many unique IPs.
42
+- Best-practice findings without an exploit path (e.g., "you're
43
+  not setting `X-Permitted-Cross-Domain-Policies`") — file these
44
+  as regular issues.
3245
 
33
-This document evolves with the project. See [LICENSE](LICENSE) for shithub's overall licensing terms.
46
+## Bug bounty
47
+
48
+shithub does not currently run a paid bounty program. We welcome
49
+findings regardless and will publicly credit you.
50
+
51
+## Severity
52
+
53
+Coarse 4-level scale:
54
+
55
+| Severity | Examples                                                       | Target fix |
56
+|----------|----------------------------------------------------------------|-----------:|
57
+| Critical | RCE; auth bypass; mass-account-takeover; private-data leak     | < 24h      |
58
+| High     | Per-user privilege escalation; SSRF into internal infra        | < 7d       |
59
+| Medium   | Stored XSS limited to an attacker's own scope; CSRF on a non-destructive route | < 30d |
60
+| Low      | Information disclosure of non-sensitive data                   | best-effort |
61
+
62
+## What you'll receive
63
+
64
+- **Acknowledgement** within 72 hours (auto-ack faster).
65
+- **Triage decision** — accepted, duplicate, out-of-scope, or
66
+  needs-more-info — within 7 days for High+ and 30 days for
67
+  Medium/Low.
68
+- **Fix timeline** based on severity.
69
+- **Coordinated disclosure** on patched release; we publish a
70
+  brief writeup naming you (with consent) and the affected
71
+  versions.
72
+
73
+## Hall of fame
74
+
75
+Reporters who responsibly disclosed accepted findings:
76
+
77
+*(Empty for now — first credit goes to the first reporter.)*
78
+
79
+## Our threat model
80
+
81
+Published at
82
+[`docs/internal/threat-model.md`](./docs/internal/threat-model.md).
83
+Useful context on what we defend against and what we don't.