[2.3.1] - 2026-03-20
Fixed
Critical Security Fix: Basic Auth Credential Bypass
- Authentication bypass when using
BASIC_AUTH_ENABLED: Fixed a critical vulnerability whereBASIC_AUTH_ENABLED=trueaccepted any username and password- Root cause:
verify_credentials()checked the deprecatedauth_enabledfield (alwaysfalse) instead ofis_basic_auth_enabled - When only
BASIC_AUTH_ENABLED=truewas set (without the deprecatedAUTH_ENABLED), credential verification was completely skipped - Both
BASIC_AUTH_ENABLEDand legacyAUTH_ENABLEDnow work correctly - All users using
BASIC_AUTH_ENABLED=trueshould update immediately
- Root cause:
Settings Persistence After Restart
- Settings saved via UI were lost on restart: Database-stored settings were not loaded during application startup
- Startup log messages now show effective configuration values (after DB overrides are applied)
ENV Conflict Warning False Positives
- "This value differs from ENV" warning shown incorrectly: Warning appeared for settings that differed from defaults, even when no ENV variable was explicitly set
- Warning now only appears when an ENV variable is explicitly set AND differs from the DB value
OAuth2 / Service Config Not Working from UI
- OAuth2, SMTP, and other services ignored UI settings: Singleton service instances (
OAuth2Client,MailcowAPI) captured settings by value at import time instead of reading dynamically- Service configs are now reloaded after settings save, import-from-env, and on startup
Health Endpoint Auth Status
- Fixed
/api/healthreporting incorrect authentication status by using the deprecatedauth_enabledfield instead of the actualis_authentication_enabledproperty