CVE-2022-31129: Inefficient Regular Expression Complexity in moment
### Impact * using string-to-date parsing in moment (more specifically rfc2822 parsing, which is tried by default) has quadratic (N^2) complexity on specific inputs * noticeable slowdown is observed with inputs above 10k characters * users who pass user-provided strings without sanity length checks to moment constructor are vulnerable to (Re)DoS attacks ### Patches The problem is patched in 2.29.4, the patch can be applied to all affected versions with minimal tweaking. ### Workarounds In general, given the proliferation of ReDoS attacks, it makes sense to limit the length of the user input to something sane, like 200 characters or less. I haven't seen legitimate cases of date-time strings longer than that, so all moment users who do pass a user-originating string to constructor are encouraged to apply such a rudimentary filter, that would help with this but also most future ReDoS vulnerabilities. ### References There is an excellent writeup of the issue here: https://github.com/moment/moment/pull/6015#issuecomment-1152961973= ### Details The issue is rooted in the code that removes legacy comments (stuff inside parenthesis) from strings during rfc2822 parsing. `moment("(".repeat(500000))` will take a few minutes to process, which is unacceptable.
Affected Software
Remediation
Event History
Frequently Asked Questions
What is CVE-2022-31129?
CVE-2022-31129 is a vulnerability in the Moment.js package that allows an attacker to craft a user-provided string that can cause the parsing algorithm to become inefficient, potentially leading to denial of service.
How does CVE-2022-31129 affect moment.js?
CVE-2022-31129 affects affected versions of moment.js, specifically those that use an inefficient parsing algorithm when handling user-provided strings.
What is the severity of CVE-2022-31129?
CVE-2022-31129 has a severity rating of high, with a CVSS score of 7.5.
How do I fix CVE-2022-31129?
To fix CVE-2022-31129, upgrade to version 2.29.4 of the moment.js package.
Where can I find more information about CVE-2022-31129?
More information about CVE-2022-31129 can be found in the following references: [GitHub Commit](https://github.com/moment/moment/commit/9a3b5894f3d5d602948ac8a02e4ee528a49ca3a3), [GitHub Pull Request](https://github.com/moment/moment/pull/6015#issuecomment-1152961973), [GitHub Security Advisory](https://github.com/moment/moment/security/advisories/GHSA-wc69-rhjr-hc9g).