π Please do NOT open public issues for security vulnerabilities.
If you discover a security issue, please Create a private security advisory
We will respond within 48 hours and work with you to address the issue.
| Version | Supported |
|---|---|
| 0.1.x | β |
When using JobGuard in production:
- β
Use SSL/TLS for PostgreSQL connections (
ssl: true) - β Store connection strings in environment variables, not code
- β
Use least-privilege database user with only required permissions:
GRANT SELECT, INSERT, UPDATE, DELETE ON jobguard_jobs TO jobguard_user;
- β Rotate database credentials regularly
- β
Set appropriate
max_connectionsfor your PostgreSQL instance - β Enable PostgreSQL audit logging for compliance requirements
- β
Keep dependencies up to date (
npm auditandnpm update) - β Validate job data in your application before enqueueing
- β Implement idempotent job handlers to prevent duplicate processing issues
- β Monitor logs for suspicious activity (unusual error patterns, connection failures)
- β Sanitizes error messages to remove credentials and sensitive data
- β Uses parameterized SQL queries to prevent SQL injection
- β Validates job data size and format
- β Implements circuit breaker pattern for fault tolerance
- β JobGuard does not encrypt job data at rest (use PostgreSQL encryption if needed)
- β JobGuard does not implement authentication (secure your PostgreSQL instance)
- β JobGuard does not sanitize job data payloads (validate in your application)
See Known Limitations in the README for details on edge-case race conditions inherent to distributed systems.
Only enable reconciliation on one JobGuard instance per queue to prevent duplicate re-enqueue attempts. See Configuration for details.
- Critical vulnerabilities: Patch released within 48 hours
- High severity: Patch released within 7 days
- Medium/Low severity: Patch released in next minor version
We appreciate responsible disclosure of security issues. Contributors who report valid security issues will be acknowledged in the CHANGELOG (unless they prefer to remain anonymous).