CVE-2018-1257: ReDoS Attack with spring-messaging
Description
Spring Framework, versions 5.0.x prior to 5.0.6 and versions 4.3.x prior to 4.3.17, and older unsupported versions allow applications to expose STOMP over WebSocket endpoints with a simple, in-memory STOMP broker through the spring-messaging module. A malicious user (or attacker) can craft a message to the broker that can lead to a regular expression, denial of service attack.
This vulnerability exposes applications that meet all of the following requirements:
- Depend on spring-messaging and spring-websocket modules.
- Register STOMP over WebSocket endpoints.
- Enable the simple STOMP broker.
Affected Spring Products and Versions
- Spring Framework 5.0 to 5.0.5
- Spring Framework 4.3 to 4.3.16
- Older unsupported versions are also affected
Mitigation
Users of affected versions should apply the following mitigation:
- 5.0.x users should upgrade to 5.0.6.
- 4.3.x users should upgrade to 4.3.17.
- Older versions should upgrade to a supported branch.
There are no other mitigation steps necessary.
Note that the use of authentication and authorization for messages, both of which are provided by Spring Security, limits exposure to this vulnerability to authorized users.
Credit
This issue was identified and responsibly reported by Muneaki Nishimura (nishimunea) of Recruit Technologies Co., Ltd.
References
- Example <a href='https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#websocket-stomp-enable'>STOMP over WebSocket config</a> where simple broker is enabled.
- <a href='https://docs.spring.io/spring-security/site/docs/5.0.3.RELEASE/reference/htmlsingle/#websocket'>Spring…