CVE-2026-17495: moment vulnerable to Path Traversal via crafted non-string locale name

Published Sep 15, 2026
·
Updated

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

Other sources

moment is a JavaScript date library for parsing, validating, manipulating, and formatting dates. In versions 2.29.2 through 2.30.1, a specially crafted non-string object passed to moment.locale() can bypass the locale-name path-traversal guard. The guard assumes the input is a string, so an object whose match() method satisfies the check while its toString() returns a traversal path reaches an internal require() call with attacker-controlled path segments. This is an incomplete fix for CVE-2022-24785 and primarily affects npm (server-side) users that pass user-provided input directly to moment.locale(). The issue is fixed in moment 2.31.0, and users should upgrade to 2.31.0 or later. As a workaround, validate that any user-supplied input is a string before passing it to moment.locale().

— MITRE

Affected Software

4 affected componentsFixes available
npm/moment>=2.29.2<=2.30.1, <2.31.0
npm/moment>=2.29.2<2.31.0
2.31.0
IBM App Connect Operator<=CD: 12.1.0 - 12.21.0 12.0 LTS: 12.0.0 - 12.0.28 13 LTS: 13.0.0 - 13.6.0
IBM App Connect EnterpriseCertified Containers Operands<=CD: 12.0.11.1-r1 - 12.0.12.5-r1, 13.0.1.0-r1 - 13.0.6.2-r1 12.0 LTS: 12.0.12-r1 - 12.0.12-r28 13 LTS: 13.0.7.0-r1 - 13.0.9.0-r1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/moment to a version that resolves this vulnerability.

    Fixed in 2.31.0
  2. Upgrade

    Upgrade moment to a version that resolves this vulnerability.

    Fixed in 2.31.0
  3. Compensating control

    Validate that any user-supplied input is a string before passing it to moment.locale().

Event History

Sep 15, 2026
CVE Published
via MITRE·05:40 AM
Data Sourced
via MITRE·05:40 AM
DescriptionSeverityWeakness
Data Sourced
via NVD·06:16 AM
DescriptionSeverityWeakness
Sep 29, 2026
Advisory Published
via GitHub·11:46 PM
Data Sourced
via GitHub·11:46 PM
DescriptionSeverityWeaknessAffected Software
Nov 9, 2026
Data Sourced
via IBM·12:00 AM
DescriptionAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Frequently Asked Questions

1

Which deployments are most likely to be exposed?

The issue primarily affects server-side npm users that pass user-provided input directly to moment.locale(). The affected version range is 2.29.2 through 2.30.1.

2

What must an attacker provide to exploit this issue?

An attacker must be able to supply a specially crafted non-string object to moment.locale(). Its match() method must satisfy the locale-name guard while its toString() method returns a traversal path used by an internal require() call.

3

Are default uses of moment.locale() affected?

The provided information identifies exposure when user-provided input is passed directly to moment.locale(). It does not indicate that applications using only application-controlled locale values are affected.

4

What can be done if upgrading is not immediately possible?

Validate that any user-supplied value is a string before passing it to moment.locale(). Upgrade to moment 2.31.0 or later when possible.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203