moment vulnerable to Path Traversal via crafted non-string locale name
What fixes it
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
Impact
moment before 2.31.0 is vulnerable to path traversal in moment.locale(). When an application passes a non-string, attacker-influenced value to moment.locale(), a specially crafted object can bypass the locale name validation and cause moment to load a file from an attacker-controlled path. This is a further bypass of the validation added in 2.29.2 for CVE-2022-24785.
This affects server-side (npm) users only. Plain string input is not affected: the existing validation correctly rejects strings that contain path separators.
Patches
This issue is patched in moment 2.31.0.
Workarounds
Validate that any user-supplied input is a string before passing it to moment.locale().
Text from GitHub Advisory Database
Affected versions 4
- moment, npm>= 2.29.2, < 2.31.0GitHub
- momentaffected: 2.29.2 before 2.31.0CVE List
- momentunaffected: 2.31.0CVE List
- moment, npmfrom 2.29.2, fixed in 2.31.0OSV
References 7
- github.com/moment/moment/commit/5f7d983c9881e65e07574de9dda3190d99520c07Fixvia GitHub
- github.com/moment/moment/releases/tag/2.31.0Fixvia GitHub
- github.com/moment/moment/security/advisories/GHSA-4p3w-j4w9-5jqwAdvisoryvia CVE List
- cna.openjsf.org/security-advisories.htmlAdvisoryvia CVE List
- github.com/advisories/GHSA-4p3w-j4w9-5jqwAdvisoryvia GitHub
- nvd.nist.gov/vuln/detail/CVE-2026-17495Referencevia GitHub
- github.com/moment/moment/pull/6386Referencevia GitHub