Executive brief
The Moment.js library, a popular tool for parsing and formatting dates in Node.js applications, is vulnerable to a denial-of-service attack. By providing a specially crafted long string to the library's duration function, an attacker can cause the application to consume excessive CPU resources. This can lead to the application becoming unresponsive, potentially disrupting business operations and service availability.
Technical details
A Regular Expression Denial of Service (ReDoS) vulnerability exists in the duration function of the Moment.js library prior to version 2.11.2. The root cause is an inefficient regular expression used to parse duration strings, which exhibits polynomial or exponential backtracking when processing specifically crafted long input strings. A remote attacker can exploit this by submitting a malicious string to any application endpoint that passes user input to the affected function. Successful exploitation results in high CPU utilization, blocking the Node.js event loop and causing a denial of service. The issue is resolved in version 2.11.2.
Affected products
- Moment.js project moment < 2.11.2
Timeline
- 2016-04-20: disclosed: Vulnerability disclosed via OSS-security mailing list
- 2017-01-23: advisory: NVD advisory published
References
- http://www.openwall.com/lists/oss-security/2016/04/20/11
- http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html
- http://www.securityfocus.com/bid/95849
- https://lists.apache.org/thread.html/10f0f3aefd51444d1198c65f44ffdf2d78ca3359423dbc1c168c9731%40%3Cdev.flink.apache.org%3E
- https://lists.apache.org/thread.html/17ff53f7999e74fbe3cc0ceb4e1c3b00b180b7c5afec8e978837bc49%40%3Cuser.flink.apache.org%3E
- https://lists.apache.org/thread.html/52bafac05ad174000ea465fe275fd3cc7bd5c25535a7631c0bc9bfb2%40%3Cuser.flink.apache.org%3E
- https://lists.apache.org/thread.html/54df3aeb4239b64b50b356f0ca6f986e3c4ca5b84c515dce077c7854%40%3Cuser.flink.apache.org%3E