4.8 KiB
4.8 KiB
Security Policy
Supported Versions
We provide security updates for the following versions:
| Version | Supported |
|---|---|
| 1.0.x | ✅ |
| < 1.0 | ❌ |
Reporting a Vulnerability
We take security vulnerabilities seriously. If you discover a security vulnerability, please follow these steps:
1. Do NOT create a public issue
Security vulnerabilities should be reported privately to protect users.
2. Report via Private Issue
- Go to the Issues page
- Create a new issue with the title prefixed with
[SECURITY] - Mark the issue as confidential/private if Gitea supports it
- Fill out the form with:
- Title: Brief description of the vulnerability (prefixed with
[SECURITY]) - Description: Detailed description of the vulnerability
- Severity: Assess the severity (Low, Moderate, High, Critical)
- Affected versions: Which versions are affected
- Steps to reproduce: How to reproduce the vulnerability
- Impact: What could an attacker do with this vulnerability
- Title: Brief description of the vulnerability (prefixed with
3. Alternative Reporting Methods
If you cannot create a private issue, please contact the maintainers directly through secure channels. Do not disclose the vulnerability publicly until it has been addressed.
4. What to Include
Please include the following information in your report:
- Type of vulnerability (e.g., XSS, CSRF, authentication bypass, etc.)
- Location (file path, component, or endpoint)
- Steps to reproduce (detailed steps)
- Potential impact (what could an attacker do?)
- Suggested fix (if you have one)
- Proof of concept (if applicable, but be careful not to include exploits)
5. Response Timeline
- Initial response: Within 48 hours
- Status update: Within 7 days
- Fix timeline: Depends on severity
- Critical: As soon as possible (typically within 24-48 hours)
- High: Within 1 week
- Medium: Within 2 weeks
- Low: Within 1 month
6. Disclosure Policy
- We will acknowledge receipt of your report within 48 hours
- We will keep you informed of our progress
- We will notify you when the vulnerability is fixed
- We will credit you in the security advisory (unless you prefer to remain anonymous)
Security Best Practices
For Contributors
- Never commit secrets: API keys, private keys, passwords, etc.
- Use secure dependencies: Keep dependencies up to date
- Follow secure coding practices: Input validation, output encoding, etc.
- Review security implications: Consider security impact of changes
For Users
- Keep dependencies updated: Run
npm auditregularly - Use HTTPS: Always use HTTPS in production
- Secure your Nostr keys: Never share your private keys
- Use secure Lightning wallets: Only use trusted Lightning wallet extensions
Known Security Considerations
Nostr Authentication
- Private keys are managed by the Alby extension (NIP-07)
- We never store or transmit private keys
- All Nostr operations are signed client-side
Lightning Payments
- Payment requests are generated via WebLN (Alby extension)
- We do not handle private keys or payment secrets
- All payment operations are performed by the user's wallet
Data Storage
- Private content is encrypted using AES-GCM
- Encryption keys are stored in browser localStorage
- No sensitive data is sent to external servers (except Nostr relays)
IndexedDB
- Encrypted content is stored in IndexedDB
- Keys are derived from a master key stored in localStorage
- Content expires after 30 days
Security Updates
Security updates will be announced via:
- Security advisories in issues
- Release notes
- Project documentation
Responsible Disclosure
We appreciate responsible disclosure. If you follow these guidelines, we will:
- Work with you to understand and resolve the issue quickly
- Credit you in our security advisory (if desired)
- Not take legal action against you
Security Checklist for Pull Requests
Before submitting a PR, ensure:
- No hardcoded secrets or credentials
- Input validation is implemented
- Output is properly encoded/escaped
- Error messages don't leak sensitive information
- Dependencies are up to date (
npm audit) - No
console.logstatements with sensitive data - Authentication/authorization is properly implemented
- HTTPS is used for all external requests
Additional Resources
Thank you for helping keep zapwall4Science secure!