CVE-2026-22746
Low · 3.7CVSS
3.7
EPSS
0.2%
Published
Apr 22, 2026
CISA due date
—
Cloudanix analysis
A login security check meant to hide whether accounts are blocked or expired can leak that information through tiny timing differences.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Data Exposure
- Component
- Library
- Class
- Information Disclosure
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Bypasses DaoAuthenticationProvider timing attack defenses when UserDetails#isEnabled, #isAccountNonExpired, or #isAccountNonLocked flags are used, allowing timing side-channel leakage of disabled/expired/locked account status.
Why it matters to the business
Low-risk information disclosure that may assist attackers in account enumeration; stable low EPSS, no KEV listing, and 184 days since publication indicate limited operational urgency across Spring Security deployments.
How an attack unfolds
An attacker performs repeated authentication attempts against known usernames and measures subtle response time differences to infer whether accounts are disabled, expired, or locked, bypassing the intended constant-time checks.
How to fix it
Upgrade Spring Security to versions beyond the affected ranges (5.7.23+, 5.8.25+, 6.3.16+, 6.5.10+, 7.0.5+); review custom UserDetails implementations that rely on the three status methods.
How to confirm the fix worked
Confirm deployed Spring Security version is outside listed ranges; re-execute controlled timing tests with disabled/expired/locked accounts to verify constant-time behavior is restored.
Typical attack path
- Map target usernames via public sources or prior reconnaissance
- Issue authentication requests exercising the affected UserDetails status checks
- Collect high-resolution timing measurements across multiple attempts
- Statistically distinguish enabled versus disabled/expired/locked accounts
How to detect it
Examine authentication logs for high volumes of failed login attempts against the same usernames with consistent timing patterns; no specific post-exploitation artifacts are typically left.
What your security team should do
- Prioritize upgrade of all Spring Security instances to fixed releases
- Audit applications using custom UserDetails status flags for exposure
- Monitor EPSS and threat intelligence for any future increase in exploitation
The record
Vulnerability in Spring Spring Security. If an application is using the UserDetails#isEnabled, #isAccountNonExpired, or #isAccountNonLocked user attributes, to enable, expire, or lock users, then DaoAuthenticationProvider's timing attack defense can be bypassed for users who are disabled, expired, or locked.This issue affects Spring Security: from 5.7.0 through 5.7.22, from 5.8.0 through 5.8.24, from 6.3.0 through 6.3.15, from 6.5.0 through 6.5.9, from 7.0.0 through 7.0.4.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-87946 Observable Timing Discrepancy vulnerability in Drupal SAML SSO - Service Provider allows… CWE-208
- CVE-2026-49265 OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. CWE-208
- CVE-2026-77696 Issue summary: SM2 signature generation uses non-constant-time arithmetic on secret… CWE-208
- CVE-2026-54875 Issue summary: A non-constant-time optimized implementation of scalar point… CWE-208
- CVE-2026-54872 Issue summary: The generic elliptic-curve scalar multiplication used for ECDSA and SM2… CWE-208
- CVE-2026-87737 An issue was discovered in the mirage-crypto-ec package before 2.4.0 for OCaml. CWE-208
- CVE-2026-84308 phpseclib is a PHP secure communications library. CWE-208
- CVE-2026-82449 Cockpit CMS before 2.14.1 contains an account enumeration vulnerability in the auth check… CWE-208