CVE-2026-48713: i18next-fs-backend: Prototype pollution via crafted missing-key string

Published Jun 15, 2026
·
Updated

Impact

i18next-fs-backend ≤ 2.6.5, when used to persist missing translation keys (e.g. via i18next-http-middleware's missingKeyHandler exposed to untrusted input), is vulnerable to prototype pollution via crafted missing-key strings.

Backend.writeFile() splits each queued missing-key string on the configured keySeparator (default .) before calling the internal setPath() walker. The walker (getLastOfPath in lib/utils.js) did not guard against unsafe segments, so a key like "proto.polluted" was split into ["proto", "polluted"] and walked straight into Object.prototype, allowing an attacker to write arbitrary properties onto the global object prototype.

Depending on the host application, polluted prototype properties may cause crashes, corrupted translation behaviour, configuration poisoning, or bypasses of property-based security checks.

Affected configuration

Applications are directly affected only if all of the following hold:

- i18next-fs-backend ≤ 2.6.5 is configured as the backend. - i18next-http-middleware's missingKeyHandler (or another route that forwards untrusted request bodies to i18next.t(..., { ... }) with saveMissing: true) is reachable by untrusted users. - The default behaviour of splitting missing-key strings on keySeparator is in use (i.e. keySeparator is not false).

Apps that do not expose missing-key persistence to untrusted input are not directly affected through this attack path.

Patches

Fixed in i18next-fs-backend 2.6.6. The traversal helper now refuses to descend through proto, constructor, or prototype segments and drops the offending write silently. Legitimate dotted keys (e.g. "header.title") are unaffected.

A matching defence-in-depth fix has been shipped in i18next-http-middleware 3.9.7 — see the companion advisory.

Workarounds

If users cannot upgrade immediately:

- Do not expose i18next-http-middleware's missingKeyHandler to untrusted users (mount it behind authentication, or remove the route). - Disable missing-key persistence (saveMissing: false, or no backend.create implementation) when accepting writes from untrusted input. - Set keySeparator: false in the i18next options to disable backend key splitting (note: this also disables nested translation keys).

Resources

- Original report by @codeswhite. - Companion advisory in i18next-http-middleware: GHSA-f49m-vf83-692w. - Previous i18next-fs-backend security release: GHSA-8847-338w-5hcj (path traversal via lng/ns, fixed in 2.6.4).

Other sources

Versions prior to 2.6.6 are vulnerable to prototype pollution via crafted missing-key strings when used to persist missing translation keys (e.g. via i18next-http-middleware's missingKeyHandler exposed to untrusted input). Backend.writeFile() splits each queued missing-key string on the configured keySeparator (default .) before calling the internal setPath() walker. The walker (getLastOfPath in lib/utils.js) did not guard against unsafe segments, so a key like "proto.polluted" was split into ["proto", "polluted"] and walked straight into Object.prototype, allowing an attacker to write arbitrary properties onto the global object prototype. Depending on the host application, polluted prototype properties may cause crashes, corrupted translation behaviour, configuration poisoning, or bypasses of property-based security checks. Applications are affected only if the missingKeyHandler (or another route that forwards untrusted request bodies to i18next.t(..., { ... }) with saveMissing: true) is reachable by untrusted users and the default behaviour of splitting missing-key strings on keySeparator is in use (i.e. keySeparator is not false). Apps that do not expose missing-key persistence to untrusted input are not directly affected through this attack path. This issue has been fixed in version 2.6.6. If developers using the library are unable to upgrade immediately, they should take the following precautions: do not expose i18next-http-middleware's missingKeyHandler to untrusted users (mount it behind authentication, or remove the route), disable missing-key persistence (saveMissing: false, or no backend.create implementation) when accepting writes from untrusted input, and set keySeparator: false in their i18next options to disable backend key splitting (note: this also disables nested translation keys).

MITRE

Affected Software

3 affected componentsFixes available
npm/i18next-fs-backend<2.6.6
i18next I18next-fs-backend Node.js<2.6.6
npm/i18next-fs-backend<2.6.6
2.6.6

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/i18next-fs-backend to a version that resolves this vulnerability.

    Fixed in 2.6.6
  2. Upgrade

    Upgrade i18next-http-middleware to a version that resolves this vulnerability.

    Fixed in 3.9.7Patch GHSA-f49m-vf83-692w
  3. Upgrade

    Upgrade i18next-fs-backend to a version that resolves this vulnerability.

    Fixed in 2.6.6
  4. Configuration

    Do not expose i18next-http-middleware's missingKeyHandler (or any route that forwards untrusted request bodies to i18next.t(...)) to untrusted users; mount it behind authentication or remove the route.

    i18next-http-middleware missingKeyHandler exposure = mount it behind authentication, or remove the route
  5. Configuration

    Disable missing-key persistence by setting saveMissing: false (or configure no backend.create implementation) when accepting writes from untrusted input.

    i18next saveMissing = false
  6. Configuration

    Set keySeparator: false in i18next options to disable backend key splitting (note this also disables nested translation keys).

    i18next keySeparator = false

Event History

Jun 15, 2026
CVE Published
via MITRE·08:31 PM
Data Sourced
via MITRE·08:31 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·10:16 PM
RemedyDescriptionSeverityWeaknessAffected Software
Jun 25, 2026
Advisory Published
via GitHub·05:28 PM
Data Sourced
via GitHub·05:28 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-48713?

The severity of CVE-2026-48713 is rated as critical with a CVSS score of 9.1.

2

How do I fix CVE-2026-48713?

To fix CVE-2026-48713, upgrade to i18next-fs-backend version 2.6.6 or later.

3

What causes CVE-2026-48713?

CVE-2026-48713 is caused by prototype pollution via crafted missing-key strings in versions prior to 2.6.6.

4

Which software is affected by CVE-2026-48713?

CVE-2026-48713 affects the npm package i18next-fs-backend and its associated libraries.

5

Is CVE-2026-48713 exploitable?

Yes, CVE-2026-48713 can be exploited through untrusted input to persist missing translation keys.

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