|
1 | | -<!-- SPDX-License-Identifier: AGPL-3.0-or-later --> |
2 | | -# Security Policy |
| 1 | +Security Policy |
3 | 2 |
|
4 | | -## Supported Versions |
| 3 | +We take security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions. |
| 4 | +Table of Contents |
5 | 5 |
|
6 | | -| Version | Supported | |
7 | | -| ------- | ------------------ | |
8 | | -| main | :white_check_mark: | |
9 | | -| < main | :x: | |
| 6 | + Reporting a Vulnerability |
| 7 | + What to Include |
| 8 | + Response Timeline |
| 9 | + Disclosure Policy |
| 10 | + Scope |
| 11 | + Safe Harbour |
| 12 | + Recognition |
| 13 | + Security Updates |
| 14 | + Security Best Practices |
10 | 15 |
|
11 | | -## Reporting a Vulnerability |
| 16 | +Reporting a Vulnerability |
| 17 | +Preferred Method: GitHub Security Advisories |
12 | 18 |
|
13 | | -Please report security vulnerabilities through GitHub private vulnerability reporting: |
14 | | -1. Go to the **Security** tab |
15 | | -2. Click **Report a vulnerability** |
16 | | -3. Fill out the form |
| 19 | +The preferred method for reporting security vulnerabilities is through GitHub's Security Advisory feature: |
17 | 20 |
|
18 | | -We respond within 48 hours. |
| 21 | + Navigate to Report a Vulnerability |
| 22 | + Click "Report a vulnerability" |
| 23 | + Complete the form with as much detail as possible |
| 24 | + Submit — we'll receive a private notification |
19 | 25 |
|
20 | | -## Security Measures |
| 26 | +This method ensures: |
21 | 27 |
|
22 | | -- Dependabot for dependency updates |
23 | | -- CodeQL for code scanning |
24 | | -- Secret scanning and push protection |
| 28 | + End-to-end encryption of your report |
| 29 | + Private discussion space for collaboration |
| 30 | + Coordinated disclosure tooling |
| 31 | + Automatic credit when the advisory is published |
25 | 32 |
|
| 33 | +Alternative: Encrypted Email |
| 34 | + |
| 35 | +If you cannot use GitHub Security Advisories, you may email us directly: |
| 36 | + |
| 37 | +Email security@hyperpolymath.org |
| 38 | +PGP Key Download Public Key |
| 39 | +Fingerprint See GPG key |
| 40 | + |
| 41 | +# Import our PGP key |
| 42 | +curl -sSL https://hyperpolymath.org/gpg/security.asc | gpg --import |
| 43 | + |
| 44 | +# Verify fingerprint |
| 45 | +gpg --fingerprint security@hyperpolymath.org |
| 46 | + |
| 47 | +# Encrypt your report |
| 48 | +gpg --armor --encrypt --recipient security@hyperpolymath.org report.txt |
| 49 | + |
| 50 | + ⚠️ Important: Do not report security vulnerabilities through public GitHub issues, pull requests, discussions, or social media. |
| 51 | + |
| 52 | +What to Include |
| 53 | + |
| 54 | +A good vulnerability report helps us understand and reproduce the issue quickly. |
| 55 | +Required Information |
| 56 | + |
| 57 | + Description: Clear explanation of the vulnerability |
| 58 | + Impact: What an attacker could achieve (confidentiality, integrity, availability) |
| 59 | + Affected versions: Which versions/commits are affected |
| 60 | + Reproduction steps: Detailed steps to reproduce the issue |
| 61 | + |
| 62 | +Helpful Additional Information |
| 63 | + |
| 64 | + Proof of concept: Code, scripts, or screenshots demonstrating the vulnerability |
| 65 | + Attack scenario: Realistic attack scenario showing exploitability |
| 66 | + CVSS score: Your assessment of severity (use CVSS 3.1 Calculator) |
| 67 | + CWE ID: Common Weakness Enumeration identifier if known |
| 68 | + Suggested fix: If you have ideas for remediation |
| 69 | + References: Links to related vulnerabilities, research, or advisories |
| 70 | + |
| 71 | +Example Report Structure |
| 72 | + |
| 73 | +## Summary |
| 74 | +[One-sentence description of the vulnerability] |
| 75 | + |
| 76 | +## Vulnerability Type |
| 77 | +[e.g., SQL Injection, XSS, SSRF, Path Traversal, etc.] |
| 78 | + |
| 79 | +## Affected Component |
| 80 | +[File path, function name, API endpoint, etc.] |
| 81 | + |
| 82 | +## Affected Versions |
| 83 | +[Version range or specific commits] |
| 84 | + |
| 85 | +## Severity Assessment |
| 86 | +- CVSS 3.1 Score: [X.X] |
| 87 | +- CVSS Vector: [CVSS:3.1/AV:X/AC:X/PR:X/UI:X/S:X/C:X/I:X/A:X] |
| 88 | + |
| 89 | +## Description |
| 90 | +[Detailed technical description] |
| 91 | + |
| 92 | +## Steps to Reproduce |
| 93 | +1. [First step] |
| 94 | +2. [Second step] |
| 95 | +3. [...] |
| 96 | + |
| 97 | +## Proof of Concept |
| 98 | +[Code, curl commands, screenshots, etc.] |
| 99 | + |
| 100 | +## Impact |
| 101 | +[What can an attacker achieve?] |
| 102 | + |
| 103 | +## Suggested Remediation |
| 104 | +[Optional: your ideas for fixing] |
| 105 | + |
| 106 | +## References |
| 107 | +[Links to related issues, CVEs, research] |
| 108 | + |
| 109 | +Response Timeline |
| 110 | + |
| 111 | +We commit to the following response times: |
| 112 | +Stage Timeframe Description |
| 113 | +Initial Response 48 hours We acknowledge receipt and confirm we're investigating |
| 114 | +Triage 7 days We assess severity, confirm the vulnerability, and estimate timeline |
| 115 | +Status Update Every 7 days Regular updates on remediation progress |
| 116 | +Resolution 90 days Target for fix development and release (complex issues may take longer) |
| 117 | +Disclosure 90 days Public disclosure after fix is available (coordinated with you) |
| 118 | + |
| 119 | + Note: These are targets, not guarantees. Complex vulnerabilities may require more time. We'll communicate openly about any delays. |
| 120 | + |
| 121 | +Disclosure Policy |
| 122 | + |
| 123 | +We follow coordinated disclosure (also known as responsible disclosure): |
| 124 | + |
| 125 | + You report the vulnerability privately |
| 126 | + We acknowledge and begin investigation |
| 127 | + We develop a fix and prepare a release |
| 128 | + We coordinate disclosure timing with you |
| 129 | + We publish security advisory and fix simultaneously |
| 130 | + You may publish your research after disclosure |
| 131 | + |
| 132 | +Our Commitments |
| 133 | + |
| 134 | + We will not take legal action against researchers who follow this policy |
| 135 | + We will work with you to understand and resolve the issue |
| 136 | + We will credit you in the security advisory (unless you prefer anonymity) |
| 137 | + We will notify you before public disclosure |
| 138 | + We will publish advisories with sufficient detail for users to assess risk |
| 139 | + |
| 140 | +Your Commitments |
| 141 | + |
| 142 | + Report vulnerabilities promptly after discovery |
| 143 | + Give us reasonable time to address the issue before disclosure |
| 144 | + Do not access, modify, or delete data beyond what's necessary to demonstrate the vulnerability |
| 145 | + Do not degrade service availability (no DoS testing on production) |
| 146 | + Do not share vulnerability details with others until coordinated disclosure |
| 147 | + |
| 148 | +Disclosure Timeline |
| 149 | + |
| 150 | +Day 0 You report vulnerability |
| 151 | +Day 1-2 We acknowledge receipt |
| 152 | +Day 7 We confirm vulnerability and share initial assessment |
| 153 | +Day 7-90 We develop and test fix |
| 154 | +Day 90 Coordinated public disclosure |
| 155 | + (earlier if fix is ready; later by mutual agreement) |
| 156 | + |
| 157 | +If we cannot reach agreement on disclosure timing, we default to 90 days from your initial report. |
| 158 | +Scope |
| 159 | +In Scope ✅ |
| 160 | + |
| 161 | +The following are within scope for security research: |
| 162 | + |
| 163 | + This repository (hyperpolymath/terrapin-ssg) and all its code |
| 164 | + Official releases and packages published from this repository |
| 165 | + Documentation that could lead to security issues |
| 166 | + Build and deployment configurations in this repository |
| 167 | + Dependencies (report here, we'll coordinate with upstream) |
| 168 | + |
| 169 | +Out of Scope ❌ |
| 170 | + |
| 171 | +The following are not in scope: |
| 172 | + |
| 173 | + Third-party services we integrate with (report directly to them) |
| 174 | + Social engineering attacks against maintainers |
| 175 | + Physical security |
| 176 | + Denial of service attacks against production infrastructure |
| 177 | + Spam, phishing, or other non-technical attacks |
| 178 | + Issues already reported or publicly known |
| 179 | + Theoretical vulnerabilities without proof of concept |
| 180 | + |
| 181 | +Qualifying Vulnerabilities |
| 182 | + |
| 183 | +We're particularly interested in: |
| 184 | + |
| 185 | + Remote code execution |
| 186 | + SQL injection, command injection, code injection |
| 187 | + Authentication/authorisation bypass |
| 188 | + Cross-site scripting (XSS) and cross-site request forgery (CSRF) |
| 189 | + Server-side request forgery (SSRF) |
| 190 | + Path traversal / local file inclusion |
| 191 | + Information disclosure (credentials, PII, secrets) |
| 192 | + Cryptographic weaknesses |
| 193 | + Deserialisation vulnerabilities |
| 194 | + Memory safety issues (buffer overflows, use-after-free, etc.) |
| 195 | + Supply chain vulnerabilities (dependency confusion, etc.) |
| 196 | + Significant logic flaws |
| 197 | + |
| 198 | +Non-Qualifying Issues |
| 199 | + |
| 200 | +The following generally do not qualify as security vulnerabilities: |
| 201 | + |
| 202 | + Missing security headers on non-sensitive pages |
| 203 | + Clickjacking on pages without sensitive actions |
| 204 | + Self-XSS (requires victim to paste code) |
| 205 | + Missing rate limiting (unless it enables a specific attack) |
| 206 | + Username/email enumeration (unless high-risk context) |
| 207 | + Missing cookie flags on non-sensitive cookies |
| 208 | + Software version disclosure |
| 209 | + Verbose error messages (unless exposing secrets) |
| 210 | + Best practice deviations without demonstrable impact |
| 211 | + |
| 212 | +Safe Harbour |
| 213 | + |
| 214 | +We support security research conducted in good faith. |
| 215 | +Our Promise |
| 216 | + |
| 217 | +If you conduct security research in accordance with this policy: |
| 218 | + |
| 219 | + ✅ We will not initiate legal action against you |
| 220 | + ✅ We will not report your activity to law enforcement |
| 221 | + ✅ We will work with you in good faith to resolve issues |
| 222 | + ✅ We consider your research authorised under the Computer Fraud and Abuse Act (CFAA), UK Computer Misuse Act, and similar laws |
| 223 | + ✅ We waive any potential claim against you for circumvention of security controls |
| 224 | + |
| 225 | +Good Faith Requirements |
| 226 | + |
| 227 | +To qualify for safe harbour, you must: |
| 228 | + |
| 229 | + Comply with this security policy |
| 230 | + Report vulnerabilities promptly |
| 231 | + Avoid privacy violations (do not access others' data) |
| 232 | + Avoid service degradation (no destructive testing) |
| 233 | + Not exploit vulnerabilities beyond proof-of-concept |
| 234 | + Not use vulnerabilities for profit (beyond bug bounties where offered) |
| 235 | + |
| 236 | + ⚠️ Important: This safe harbour does not extend to third-party systems. Always check their policies before testing. |
| 237 | + |
| 238 | +Recognition |
| 239 | + |
| 240 | +We believe in recognising security researchers who help us improve. |
| 241 | +Hall of Fame |
| 242 | + |
| 243 | +Researchers who report valid vulnerabilities will be acknowledged in our Security Acknowledgments (unless they prefer anonymity). |
| 244 | + |
| 245 | +Recognition includes: |
| 246 | + |
| 247 | + Your name (or chosen alias) |
| 248 | + Link to your website/profile (optional) |
| 249 | + Brief description of the vulnerability class |
| 250 | + Date of report |
| 251 | + |
| 252 | +What We Offer |
| 253 | + |
| 254 | + ✅ Public credit in security advisories |
| 255 | + ✅ Acknowledgment in release notes |
| 256 | + ✅ Entry in our Hall of Fame |
| 257 | + ✅ Reference/recommendation letter upon request (for significant findings) |
| 258 | + |
| 259 | +What We Don't Currently Offer |
| 260 | + |
| 261 | + ❌ Monetary bug bounties |
| 262 | + ❌ Hardware or swag |
| 263 | + ❌ Paid security research contracts |
| 264 | + |
| 265 | + Note: We're a community project with limited resources. Your contributions help everyone who uses this software. |
| 266 | + |
| 267 | +Security Updates |
| 268 | +Receiving Updates |
| 269 | + |
| 270 | +To stay informed about security updates: |
| 271 | + |
| 272 | + Watch this repository: Click "Watch" → "Custom" → Select "Security alerts" |
| 273 | + GitHub Security Advisories: Published at Security Advisories |
| 274 | + Release notes: Security fixes noted in CHANGELOG |
| 275 | + |
| 276 | +Update Policy |
| 277 | +Severity Response |
| 278 | +Critical/High Patch release as soon as fix is ready |
| 279 | +Medium Included in next scheduled release (or earlier) |
| 280 | +Low Included in next scheduled release |
| 281 | +Supported Versions |
| 282 | +Version Supported Notes |
| 283 | +main branch ✅ Yes Latest development |
| 284 | +Latest release ✅ Yes Current stable |
| 285 | +Previous minor release ✅ Yes Security fixes backported |
| 286 | +Older versions ❌ No Please upgrade |
| 287 | +Security Best Practices |
| 288 | + |
| 289 | +When using terrapin-ssg, we recommend: |
| 290 | +General |
| 291 | + |
| 292 | + Keep dependencies up to date |
| 293 | + Use the latest stable release |
| 294 | + Subscribe to security notifications |
| 295 | + Review configuration against security documentation |
| 296 | + Follow principle of least privilege |
| 297 | + |
| 298 | +For Contributors |
| 299 | + |
| 300 | + Never commit secrets, credentials, or API keys |
| 301 | + Use signed commits (git config commit.gpgsign true) |
| 302 | + Review dependencies before adding them |
| 303 | + Run security linters locally before pushing |
| 304 | + Report any concerns about existing code |
| 305 | + |
| 306 | +Additional Resources |
| 307 | + |
| 308 | + Our PGP Public Key |
| 309 | + Security Advisories |
| 310 | + Changelog |
| 311 | + Contributing Guidelines |
| 312 | + CVE Database |
| 313 | + CVSS Calculator |
| 314 | + |
| 315 | +Contact |
| 316 | +Purpose Contact |
| 317 | +Security issues Report via GitHub or security@hyperpolymath.org |
| 318 | +General questions GitHub Discussions |
| 319 | +Other enquiries See README for contact information |
| 320 | +Policy Changes |
| 321 | + |
| 322 | +This security policy may be updated from time to time. Significant changes will be: |
| 323 | + |
| 324 | + Committed to this repository with a clear commit message |
| 325 | + Noted in the changelog |
| 326 | + Announced via GitHub Discussions (for major changes) |
| 327 | + |
| 328 | +Thank you for helping keep terrapin-ssg and its users safe. |
0 commit comments