Loading HuntDB...

GHSA-wc69-rhjr-hc9g

GitHub Security Advisory

Moment.js vulnerable to Inefficient Regular Expression Complexity

✓ GitHub Reviewed HIGH Has CVE

Advisory Details

### 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 Packages

npm moment
Affected versions: 2.18.0 (fixed in 2.29.4)
NuGet Moment.js
Affected versions: 2.18.0 (fixed in 2.29.4)

Related CVEs

Key Information

GHSA ID
GHSA-wc69-rhjr-hc9g
Published
July 6, 2022 6:38 PM
Last Modified
September 14, 2022 7:29 PM
CVSS Score
7.5 /10
Primary Ecosystem
npm
Primary Package
moment
GitHub Reviewed
✓ Yes

Dataset

Last updated: September 29, 2025 6:31 AM

Data from GitHub Advisory Database. This information is provided for research and educational purposes.