The Veren team takes security seriously. If you discover a security vulnerability, please do not create a public GitHub issue. Instead, follow these steps:
- Email: Send a detailed report to the project maintainers (you can find contact info in the main README)
- Subject Line: Start with
[SECURITY]and include a brief description - Include Details:
- Description of the vulnerability
- Steps to reproduce (if applicable)
- Potential impact
- Suggested fix (if you have one)
- Your contact information
- Initial Response: 48 hours
- Confirmation: 7 days
- Fix Plan: 14 days
- Public Disclosure: Coordinated with security researchers (typically 90 days)
-
Never commit secrets - Ensure no API keys, tokens, or credentials are in the codebase
- Use
.envfiles for local configuration - Reference CONTRIBUTING.md for proper
.envsetup
- Use
-
Authentication & Authorization
- Always validate user permissions before operations
- Use JWT tokens with proper expiry (15 minutes for access tokens)
- Implement refresh token rotation (7 days for refresh tokens)
- Never store passwords in plain text
-
Data Protection
- Encrypt sensitive data at rest
- Use HTTPS for all communications
- Sanitize user inputs to prevent injection attacks
- Validate file uploads (size, type, content)
-
Dependencies
- Keep dependencies up to date
- Run
npm auditregularly and fix vulnerabilities - Review dependency license compliance
- Be cautious with transitive dependencies
-
Code Security
- Use prepared statements for database queries (guard against SQL injection)
- Never concatenate strings into commands
- Implement proper error handling (don't leak implementation details)
- Use security headers (HSTS, CSP, X-Frame-Options)
- Validate and sanitize all external inputs
- Look for potential security issues during code review
- Question any changes to authentication/authorization
- Check for hardcoded secrets or credentials
- Verify dependency changes
- Test for common vulnerabilities (OWASP Top 10)
- Validates all incoming requests
- Implements rate limiting
- Authenticates all requests (except public endpoints)
- Validates webhook signatures from workers
- Only processes authenticated requests from API Gateway
- Validates project ownership before operations
- Runs untrusted code in isolated environments
- Cleans up temporary files and secrets
- Uses environment variables for connection strings
- Implements query parameterization
- Restricts database user permissions
- Has backup and recovery procedures
- GitHub OAuth integration with secure state validation
- JWT tokens with short expiry times
- Refresh token rotation
- Session invalidation on logout
{
"engines": {
"node": ">=18.0.0"
},
"audit": "All dependencies scanned regularly with 'npm audit'"
}Run these commands regularly:
# Check for vulnerabilities
npm audit
# Fix automatically (if safe)
npm audit fix
# Update dependencies
npm update
# Check for outdated packages
npm outdatedIf a vulnerability is found in a dependency:
- Check GitHub Security Advisories for recommendations
- Update to the patched version if available
- If no patch exists, consider alternatives
- Document the vulnerability and mitigation in the PR
Never commit these - always use .env files (see CONTRIBUTING.md):
DATABASE_URL
MONGODB_URI
REDIS_URL
JWT_SECRET
GITHUB_CLIENT_ID
GITHUB_CLIENT_SECRET
GITHUB_WEBHOOK_SECRET
These should NEVER be:
- Logged to console
- Sent in unencrypted channels
- Committed to version control
- Exposed in error messages
- Use specific version tags (never
latest) - Scan images for vulnerabilities:
docker scan <image> - Build from trusted base images
- Minimize image layers and size
- Don't run as root in containers
- Use read-only root filesystem when possible
- Implement resource limits (CPU, memory)
- Use security scanning in CI/CD
- Keep Docker updated
- Principle of least privilege - only grant minimum necessary permissions
- Defense in depth - multiple security layers
- Regular updates and patches
- Audit logging for all operations
- Secure communication (HTTPS/TLS)
- Use firewalls to restrict traffic
- Implement service-to-service authentication
- Use VPCs or private networks when possible
- Monitor unusual traffic patterns
This project follows these security standards:
- OWASP Top 10 Prevention
- CWE (Common Weakness Enumeration) recommendations
- Data Protection
- GDPR compliance for user data
- Data retention policies
- User consent for data collection
All PRs should consider:
- No secrets exposed
- Authentication/authorization properly implemented
- Input validation present
- Error handling doesn't leak information
- Dependencies updated if needed
- SQL injection/injection attacks prevented
- XSS vulnerabilities addressed
- CSRF protection implemented
- Rate limiting configured
- Logging doesn't expose sensitive data
- Monthly:
npm auditchecks and updates - Quarterly: Security review of auth system
- Annually: Full penetration testing (recommended)
- Always: Review security-related issues on GitHub
For security concerns or disclosures:
- Project Maintainers: [Contact info from main README]
- GitHub Security Advisory: [GitHub repo security tab]
- Emergency Contact: Available in private repo documentation
We appreciate security researchers and contributors who responsibly disclose vulnerabilities to help us maintain a secure project.
Last Updated: 2024 Next Review: Quarterly