|
2 | 2 |
|
3 | 3 | ## Supported Versions |
4 | 4 |
|
| 5 | +Use this section to tell people about which versions of your project are |
| 6 | +currently being supported with security updates. |
| 7 | + |
5 | 8 | | Version | Supported | |
6 | 9 | | ------- | ------------------ | |
7 | | -| 0.1.x | :white_check_mark: | |
| 10 | +| 5.1.x | :white_check_mark: | |
| 11 | +| 5.0.x | :x: | |
| 12 | +| 4.0.x | :white_check_mark: | |
| 13 | +| < 4.0 | :x: | |
8 | 14 |
|
9 | 15 | ## Reporting a Vulnerability |
10 | 16 |
|
11 | | -We take security vulnerabilities seriously. If you discover a security issue, |
12 | | -please report it responsibly. |
13 | | - |
14 | | -### How to Report |
15 | | - |
16 | | -1. **Preferred Method**: Open a confidential security issue on GitLab |
17 | | - - Go to Issues → New Issue → Check "This issue is confidential" |
18 | | - |
19 | | -2. **Email**: Send details to the maintainers listed in MAINTAINERS.md |
20 | | - - Include "SECURITY" in the subject line |
21 | | - - Use PGP encryption if available |
22 | | - |
23 | | -3. **Do NOT**: |
24 | | - - Open public issues for security vulnerabilities |
25 | | - - Disclose the vulnerability publicly before it's fixed |
26 | | - - Exploit the vulnerability beyond proof-of-concept |
27 | | - |
28 | | -### What to Include |
29 | | - |
30 | | -- Description of the vulnerability |
31 | | -- Steps to reproduce |
32 | | -- Potential impact assessment |
33 | | -- Suggested fix (if any) |
34 | | -- Your contact information for follow-up |
35 | | - |
36 | | -### Response Timeline |
37 | | - |
38 | | -| Severity | Acknowledgment | Target Resolution | |
39 | | -|----------|----------------|-------------------| |
40 | | -| Critical | 4 hours | 24 hours | |
41 | | -| High | 12 hours | 72 hours | |
42 | | -| Medium | 24 hours | 1 week | |
43 | | -| Low | 48 hours | 1 month | |
44 | | - |
45 | | -### Severity Classification |
46 | | - |
47 | | -- **Critical**: Remote code execution, data corruption, privilege escalation |
48 | | -- **High**: Path traversal, audit log tampering, authentication bypass |
49 | | -- **Medium**: Information disclosure, denial of service |
50 | | -- **Low**: Minor information leaks, documentation issues |
51 | | - |
52 | | -## Security Design |
53 | | - |
54 | | -polysafe-gitfixer is designed with security as a primary concern: |
55 | | - |
56 | | -### Type-Safe Languages |
57 | | - |
58 | | -All core components use memory-safe, type-safe languages: |
59 | | -- **Rust**: Memory safety without garbage collection |
60 | | -- **Haskell**: Strong static typing, totality checking |
61 | | -- **Elixir/OTP**: Process isolation, fault tolerance |
62 | | -- **Idris**: Dependent types for correctness proofs |
63 | | - |
64 | | -### Capability-Based Security |
65 | | - |
66 | | -The `capability` crate implements: |
67 | | -- **Path Traversal Prevention**: All filesystem access goes through `DirCapability` |
68 | | -- **Unforgeable Tokens**: Capabilities cannot be forged or escalated |
69 | | -- **Principle of Least Privilege**: Capabilities grant minimum required access |
70 | | - |
71 | | -### Audit Logging |
72 | | - |
73 | | -- **Hash-Chained Log**: Each entry includes SHA-256 hash of previous entry |
74 | | -- **Tamper Evidence**: Any modification breaks the chain |
75 | | -- **Append-Only**: Log entries cannot be modified or deleted |
76 | | - |
77 | | -### Transactional Operations |
78 | | - |
79 | | -- **RAII Cleanup**: Resources freed automatically on scope exit |
80 | | -- **Atomic Operations**: Write-to-temp, then rename |
81 | | -- **Rollback on Failure**: Incomplete operations are automatically reversed |
82 | | - |
83 | | -## Security Practices |
84 | | - |
85 | | -### Development |
86 | | - |
87 | | -- All code requires review before merge |
88 | | -- Automated security scanning in CI/CD |
89 | | -- Dependency vulnerability monitoring |
90 | | -- SPDX license headers on all source files |
91 | | - |
92 | | -### Testing |
93 | | - |
94 | | -- Unit tests for security-critical functions |
95 | | -- Property-based testing for edge cases |
96 | | -- Integration tests for capability boundaries |
97 | | - |
98 | | -### Dependencies |
99 | | - |
100 | | -We minimize dependencies and prefer: |
101 | | -- Well-audited, widely-used libraries |
102 | | -- Libraries with security-focused maintainers |
103 | | -- Pure Rust implementations over C bindings where practical |
104 | | - |
105 | | -## Acknowledgments |
106 | | - |
107 | | -We maintain a security acknowledgments list for responsible disclosures. |
108 | | -Reporters may choose to be credited publicly or remain anonymous. |
109 | | - |
110 | | -## Contact |
111 | | - |
112 | | -For security questions that don't involve vulnerabilities, you may: |
113 | | -- Open a regular issue with the "security-question" label |
114 | | -- Ask in project discussions |
115 | | - |
116 | | ---- |
| 17 | +Use this section to tell people how to report a vulnerability. |
117 | 18 |
|
118 | | -This security policy follows [RFC 9116](https://www.rfc-editor.org/rfc/rfc9116) guidelines. |
119 | | -See `.well-known/security.txt` for machine-readable security contact information. |
| 19 | +Tell them where to go, how often they can expect to get an update on a |
| 20 | +reported vulnerability, what to expect if the vulnerability is accepted or |
| 21 | +declined, etc. |
0 commit comments