We release patches for security vulnerabilities for the following versions:
| Version | Supported |
|---|---|
| 1.x.x | ✅ |
| < 1.0 | ❌ |
We recommend always using the latest release to ensure you have the latest security updates.
The contract-manager team takes security vulnerabilities seriously. We appreciate your efforts to responsibly disclose your findings.
- Open a public GitHub issue for security vulnerabilities
- Disclose the vulnerability publicly before it has been addressed
Report security vulnerabilities via GitHub Security Advisories:
- Go to the Security tab of this repository
- Click "Report a vulnerability"
- Fill out the form with details about the vulnerability
Or, report via email:
Contact the Security maintainers listed in MAINTAINERS.md directly with details about the vulnerability.
To help us understand and address the issue quickly, please include:
- Description — A clear description of the vulnerability
- Impact — What an attacker could achieve by exploiting this vulnerability
- Reproduction Steps — Detailed steps to reproduce the issue
- Affected Versions — Which versions of the project are affected
- Proposed Fix — If you have suggestions for how to fix the issue (optional)
- Your Contact Information — So we can follow up with questions
When you report a security vulnerability, here's what will happen:
- Acknowledgment — We will acknowledge receipt of your vulnerability report within 3 business days
- Initial Assessment — We will investigate and confirm the vulnerability within 5 business days
- Updates — We will keep you informed about our progress addressing the issue
- Fix Development — We will develop and test a fix for the vulnerability
- Release — We will:
- Release a patched version
- Publish a security advisory
- Credit you for the discovery (unless you prefer to remain anonymous)
We aim to:
- Acknowledge reports within 3 business days
- Provide an initial assessment within 5 business days
- Release a fix within 30 days for high-severity issues
- Release a fix within 90 days for medium/low-severity issues
These timelines may vary depending on the complexity of the issue.
When deploying or using contract-manager, we recommend the following:
-
Keep Everything Updated
- Regularly update to the latest version of
contract-manager - Keep Docker images, Go dependencies, and PostgreSQL up to date
- Monitor security advisories for this project and its dependencies
- Regularly update to the latest version of
-
Protect Sensitive Data
- Never commit private keys, certificates, or credentials to version control
- Use environment variables or a secure vault (e.g., HashiCorp Vault) for sensitive configuration
- Rotate credentials and tokens regularly
-
Secure the Database
- Use strong, unique passwords for PostgreSQL
- Restrict network access to the database port
- Enable TLS for database connections in production
-
Vault Configuration
- Do not use
dev-root-tokenin production — initialize and unseal Vault properly - Enable audit logging on Vault
- Rotate Vault tokens and keys according to your security policy
- Do not use
-
Network Security
- Enable HTTPS/TLS — see DEPLOYMENT.md for TLS configuration
- Do not bind services to
0.0.0.0in production without firewall rules - Use the reverse proxy to terminate TLS and enforce security headers
-
Authentication
- Change all default passwords before going to production
- Set an appropriate
TOKEN_EXPIRYvalue for your use case - Configure
BCRYPT_COSTto at least12
-
Container Security
- Run containers as non-root users (already configured)
- Regularly rebuild images to pull in base image security patches
- Use read-only root filesystems where possible
-
Code Review
- All code changes require review before merging
- Pay special attention to authentication, authorization, and cryptographic operations
- Use parameterized queries for all database operations — never string interpolation
-
Dependency Management
- Regularly audit dependencies for known vulnerabilities
- Keep Go modules up to date
- Review dependency updates before merging
-
Testing
- Write tests that cover security-relevant code paths
- Test error handling and edge cases
- Never use real credentials in test code — use mock data and test fixtures
-
Secrets in Tests
- Never commit real credentials, tokens, or keys
- Use clearly fake placeholder values in examples and tests
This project implements:
- JWT-based authentication — Tokens are signed and verified on every request
- Role-Based Access Control (RBAC) — Fine-grained permissions enforced at the handler level
- Bcrypt password hashing — With configurable cost factor
- Token expiry — Configurable session lifetime
This project performs cryptographic operations including:
- Cryptographic contract signing — Using asymmetric keys for contract integrity
- Key management via Vault — HashiCorp Vault stores and manages encryption keys
- Bcrypt hashing — For password storage
- SHA-256 — For integrity checksums
These operations rely on:
- Proper HashiCorp Vault initialization and configuration
- Secure key generation and storage
- A trusted TLS certificate for HTTPS in production
The system maintains a comprehensive audit log of all operations including:
- User authentication events
- Contract lifecycle changes
- Role assignment changes
- Key management operations
Ensure audit logs are protected from unauthorized modification and retained according to your compliance policy.
We believe in coordinated vulnerability disclosure:
- Report — Security researchers report vulnerabilities privately
- Fix — We develop and test a fix
- Release — We release the patched version
- Disclose — We publish a security advisory with credit to the researcher
- Public — Full details are disclosed after users have time to update
We will not take legal action against security researchers who:
- Make a good faith effort to avoid privacy violations and data destruction
- Report vulnerabilities privately and give us reasonable time to respond
- Do not exploit vulnerabilities beyond what's necessary to demonstrate the issue
Stay informed about security updates:
- GitHub Security Advisories — Watch this repository for security advisories
- Releases — Check the Releases page for security patches
- Changelog — Review
CHANGELOG.mdfor security-related changes
If you have questions about this security policy or the security of this project:
- Review this document thoroughly
- Check existing security advisories
- Contact the maintainers listed in MAINTAINERS.md
Thank you for helping keep contract-manager and our users safe!