MediumGHSA-4p3w-j4w9-5jqwCVE-2026-17495

moment vulnerable to Path Traversal via crafted non-string locale name

Published 29 Sept 2026 · Updated 30 Sept 2026

Affected package

Affected
>=2.29.2 <2.31.0
Fixed in
2.31.0
Update to the fixed version for your release line, for example:npm install moment@2.31.0

Details

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().

Is GHSA-4p3w-j4w9-5jqw in any of your client repos?

Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected moment, and gives you the command that fixes it.

References

Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.