Get ahead
VMware offers training and certification to turbo-charge your progress.
Learn moreWhen WS-Addressing is used with non-anonymous ReplyTo or FaultTo addresses, Spring WS may initiate outbound connections through configured WebServiceMessageSender instances to destinations taken directly from request headers without verifying that those destinations are safe to connect to.
A remote attacker may supply crafted addressing headers that cause the server to connect to internal-only hosts, cloud metadata endpoints, or other sensitive destinations (SSRF).
This issue only affects deployments where all the following are true:
AbstractAddressingEndpointMapping subclass is registered with one or more WebServiceMessageSender instances configured for out-of-band replies.wsa:ReplyTo / wsa:FaultTo) from untrusted callers.Spring Web Services:
Versions that are no longer supported are also affected.
Users of affected versions should upgrade to the corresponding fixed version.
| Affected version(s) | Fix version | Availability |
|---|---|---|
| 5.0.x | 5.0.2 | OSS |
| 5.0.1.1 | Enterprise Support Only | |
| 4.1.x | 4.1.4 | OSS |
| 4.1.3.1 | Enterprise Support Only | |
| 4.0.x | 4.0.19 | Enterprise Support Only |
| 3.1.x | 3.1.9 | Enterprise Support Only |
If you cannot upgrade, you can restrict the destinations that each configured sender accepts by overriding its supports method.
For example, to allowlist specific JMS destination names:
class SafeJmsMessageSender extends JmsMessageSender {
@Override
public boolean supports(URI uri) {
return super.supports(uri) &&
isAllowedDestination(JmsTransportUtils.getDestinationName(uri));
}
private boolean isAllowedDestination(String destinationName) {
// Return true only for known-safe destination names
}
}
Apply the same pattern to any other configured sender types, such as HttpUrlConnectionMessageSender, MailMessageSender, etc.
To report a security vulnerability for a project within the Spring portfolio, see the Security Policy