Executive brief
Spring Web Services' SOAP security layer leaks detailed account information (such as whether a user account is locked or disabled) to remote clients through error messages, instead of failing with generic authentication errors. This enables attackers to enumerate valid user accounts and infer their operational status without legitimate access, potentially aiding targeted attacks or account discovery.
Technical details
The vulnerability is an information disclosure flaw (CWE-209) in Spring WS's integration with Spring Security. Multiple authentication paths—including UsernameToken handling in SpringSecurityPasswordValidationCallbackHandler and X.509 authentication in X509AuthenticationProvider—embedded detailed UserDetails objects and AccountStatusException messages in SOAP fault responses instead of returning generic authentication errors. This allowed remote, unauthenticated SOAP clients to distinguish between invalid credentials, locked accounts, disabled accounts, and expired accounts by examining exception messages and callback outcomes. The fix (committed 2026-04-30) deprecates the leaky SpringSecurityUtils.checkUserValidity method, delegates to Spring Security's AccountStatusUserDetailsChecker for standardized error wording, catches AccountStatusException during token handling, and maps it uniformly to BadCredentialsException with a generic message. Patches are available for versions 5.0.2 and 4.1.4; versions 4.0.x and 3.1.x have no patched releases.
Affected products
- VMware Spring Web Services 5.0.0 through 5.0.1; 4.1.0 through 4.1.3; 4.0.0 through 4.0.18; 3.1.0 through 3.1.8
Timeline
- 2026-06-11: disclosed: Published to GitHub Advisory Database
- 2026-06-09: patched: Fix committed to upstream repository (version 5.0.2 and 4.1.4)