We release patches for security vulnerabilities for the following versions:
| Version | Supported |
|---|---|
| 0.x.x | Yes (current) |
We take the security of Alexander Storage seriously. If you have discovered a security vulnerability, please report it responsibly.
Please do not report security vulnerabilities through public GitHub issues.
Instead, please send an email to the maintainers with the following information:
- Description: A clear description of the vulnerability
- Impact: What an attacker could accomplish with this vulnerability
- Steps to Reproduce: Detailed steps to reproduce the issue
- Affected Versions: Which versions are affected
- Suggested Fix: If you have a suggested fix, please include it
- Acknowledgment: We will acknowledge receipt of your report within 48 hours
- Assessment: We will assess the vulnerability and determine its severity
- Updates: We will keep you informed of our progress
- Resolution: We will work to resolve the issue as quickly as possible
- Credit: With your permission, we will credit you in the security advisory
- Critical vulnerabilities: We aim to release a fix within 7 days
- High severity: We aim to release a fix within 14 days
- Medium/Low severity: We aim to release a fix within 30 days
When deploying Alexander Storage, follow these security best practices:
- Generate strong keys: Use
openssl rand -hex 32for the encryption key - Secure storage: Store the encryption key in a secrets manager (e.g., HashiCorp Vault, AWS Secrets Manager)
- Key rotation: Plan for key rotation procedures
- Never commit keys: Ensure encryption keys are never committed to version control
- TLS/HTTPS: Always use TLS in production. Place Alexander behind a reverse proxy (nginx, Caddy) with TLS
- Firewall: Restrict access to the server port (default 9000)
- Internal networks: If possible, run Alexander on internal networks only
- Strong passwords: Use strong, unique passwords for PostgreSQL
- Network isolation: Run PostgreSQL on a private network
- SSL connections: Enable SSL for PostgreSQL connections in production
- Regular backups: Maintain encrypted backups of the database
- Principle of least privilege: Create separate access keys for different applications
- Key rotation: Regularly rotate access keys
- Audit logging: Monitor access key usage
- Disable unused keys: Deactivate access keys that are no longer needed
- Keep updated: Regularly update to the latest version
- Monitor logs: Set up log aggregation and alerting
- Resource limits: Configure appropriate resource limits
- Regular audits: Periodically audit access and permissions
Alexander implements AWS Signature V4 for request authentication. This provides:
- Request integrity verification
- Replay attack prevention (via timestamp validation)
- Credential protection (secret key never transmitted)
Access key secrets are stored encrypted using AES-256-GCM. The encryption provides:
- Confidentiality (secrets are encrypted at rest)
- Integrity (GCM authentication tag prevents tampering)
- Unique nonces (prevent pattern analysis)
Presigned URLs have configurable expiration times. Consider:
- Using short expiration times for sensitive content
- Maximum expiration is 7 days (per AWS S3 specification)
- URLs include the signature, which cannot be revoked
We follow a coordinated disclosure process:
- Reporter submits vulnerability privately
- We acknowledge and assess the report
- We develop and test a fix
- We prepare a security advisory
- We release the fix and publish the advisory
- Reporter is credited (with permission)
No security advisories have been issued yet.
Thank you for helping keep Alexander Storage and its users safe!