RUSTSEC-2023-0071 (Marvin Attack on RSA) affects this framework when using MySQL storage through the SQLx dependency chain. This is a timing side-channel vulnerability in RSA PKCS#1 v1.5 decryption operations.
Key Details:
- CVE: CVE-2023-49092
- Severity: Medium (CVSS 5.9)
- Risk Assessment: EXTREMELY LOW in typical production environments
- Affected Features: MySQL storage (
mysql-storagefeature)
The vulnerability poses minimal practical risk because:
- Network Access Required: Attacker needs ability to trigger RSA operations remotely
- Complex Attack: Requires sophisticated timing analysis over many operations
- Limited Exposure: RSA operations in SQLx are primarily for TLS connection setup
- Infrastructure Protection: Production environments typically have network isolation
We strongly recommend using PostgreSQL instead of MySQL to completely eliminate this vulnerability:
[features]
default = ["postgres-storage"] # Instead of mysql-storageBenefits of PostgreSQL Migration:
- β Complete RSA elimination - No RSA dependencies in the chain
- β Better performance - Native Rust PostgreSQL drivers
- β Enhanced features - Superior JSON support, full-text search
- β Minimal migration effort - SQLx provides database-agnostic interface
If PostgreSQL migration is not immediately feasible:
- Network Isolation: Ensure database connections are not exposed to untrusted networks
- VPN/Private Networks: Use secure, isolated network channels for database communication
- Connection Pooling: Use connection pooling to reduce RSA handshake frequency
- Monitoring: Monitor for unusual timing patterns in database operations
- Production Safe: Framework is secure for production use with proper network isolation
- No Immediate Action Required: Vulnerability is not practically exploitable in typical deployments
- Long-term Recommendation: Migrate to PostgreSQL for optimal security posture
For detailed technical analysis, see RUSTSEC-2023-0071_COMPREHENSIVE_ANALYSIS.md.
Currently supported versions of the Auth Framework with security updates:
| Version | Supported |
|---|---|
| 0.1.x | β |
| < 0.1 | β |
The Auth Framework is designed with security as a primary concern. However, security is a shared responsibility between the library maintainers and the users implementing it.
This library provides:
- Secure Token Management: JWT tokens with proper signing and validation
- Password Hashing: Argon2 and bcrypt implementations
- Rate Limiting: Protection against brute force attacks
- Session Management: Secure session handling with expiration
- Constant-Time Operations: Protection against timing attacks
- Input Validation: Comprehensive input sanitization
- Audit Logging: Security event tracking
When using this library, ensure:
- Secret Management: Never hardcode secrets in your application
- HTTPS: Always use HTTPS in production
- Key Rotation: Regularly rotate signing keys and secrets
- Dependency Updates: Keep all dependencies updated
- Configuration Review: Regularly review security configurations
- Monitoring: Monitor for suspicious authentication patterns
We take security vulnerabilities seriously. If you discover a security issue:
Instead, please:
- Email: Send details to security@example.com
- Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
- Encrypt: Use PGP if possible (key available on request)
- Acknowledgment: We will acknowledge receipt within 48 hours
- Assessment: We will assess the vulnerability within 5 business days
- Fix: We will work on a fix and coordinate disclosure
- Release: Security fixes will be released as soon as possible
- Credit: We will credit the reporter unless they prefer to remain anonymous
// Use strong secrets
let config = AuthConfig::new()
.security(SecurityConfig::secure()) // Use secure defaults
.rate_limiting(RateLimitConfig::new(100, Duration::from_secs(60)));// Good: Use environment variables
let secret = std::env::var("JWT_SECRET").expect("JWT_SECRET must be set");
// Bad: Hardcoded secret
let secret = "hardcoded-secret"; // DON'T DO THIS// Use secure storage in production
let storage = RedisStorage::new("rediss://user:pass@redis.example.com:6380")?;
// Not recommended for production
let storage = MemoryStorage::new(); // Only for development/testing- No hardcoded secrets or passwords
- Proper input validation
- Constant-time operations for sensitive comparisons
- No sensitive data in logs
- Proper error handling without information leakage
- Secure defaults in configurations
- Updated dependencies
- Test with invalid/malformed inputs
- Test rate limiting functionality
- Test token expiration and revocation
- Test permission boundaries
- Test against common attack vectors
- User credentials and authentication data
- Session tokens and API keys
- User personal information
- System configuration and secrets
- Credential Stuffing: Automated attempts using stolen credentials
- Brute Force: Systematic password guessing attempts
- Session Hijacking: Stealing or intercepting session tokens
- Privilege Escalation: Gaining unauthorized access levels
- Timing Attacks: Exploiting time differences in operations
- Injection Attacks: Malicious input exploitation
- Rate limiting and account lockout
- Strong password requirements
- Secure session management
- Proper authorization checks
- Constant-time operations
- Input validation and sanitization
This library aims to help users meet common security standards:
- OWASP Top 10: Address common web application vulnerabilities
- NIST Cybersecurity Framework: Implement security controls
- PCI DSS: Payment card industry security standards
- GDPR: Data protection compliance features
We regularly audit and update dependencies. Security-sensitive dependencies include:
ring: Cryptographic operationsjsonwebtoken: JWT implementationargon2: Password hashingredis: Storage backendtokio: Async runtime
Security-related changes will be clearly marked in the changelog with the [SECURITY] tag.
For security questions or concerns:
- Email: security@example.com
- PGP Key: Available on request
We thank the security researchers and community members who help keep this project secure.
This security policy is subject to updates. Please check regularly for the latest version.