Skip to main content

i18next-fs-backend EUVD-2026-37005

| CVE-2026-48713 CRITICAL
Improperly Controlled Modification of Object Prototype Attributes (Prototype Pollution) (CWE-1321)
2026-06-15 GitHub_M
9.1
CVSS 3.1 · Vendor: GitHub_M
Share

Severity by source

Vendor (GitHub_M) PRIMARY
9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
vuln.today AI
7.7 HIGH

Remote unauthenticated via HTTP, but requires a non-default deployment (missingKeyHandler exposed, saveMissing on, default keySeparator) so AC:H; integrity/availability high via prototype writes, low confidentiality from possible auth-check bypass.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:H
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
High

Lifecycle Timeline

3
Patch available
Jun 15, 2026 - 23:02 EUVD
Source Code Evidence Fetched
Jun 15, 2026 - 22:47 vuln.today
Analysis Generated
Jun 15, 2026 - 22:47 vuln.today

DescriptionCVE.org

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

AnalysisAI

Prototype pollution in i18next-fs-backend versions prior to 2.6.6 allows remote attackers to write arbitrary properties onto Object.prototype by submitting crafted missing-translation keys such as '__proto__.polluted' to applications that expose i18next-http-middleware's missingKeyHandler to untrusted input. Backend.writeFile() split keys on the configured keySeparator (default '.') and the getLastOfPath walker in lib/utils.js did not filter unsafe segments before traversing the target object. …

Unlock full vulnerability intelligence

  • Risk assessment & exploitation conditions
  • Attack chain visualization
  • Remediation with exact patch versions
  • Threat intelligence from 22 sources
  • Personal watchlist & email alerts

Free forever · No credit card required

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata

Access
Identify exposed missingKeyHandler endpoint
Delivery
Send HTTP request with key '__proto__.polluted'
Exploit
writeFile() splits key on '.' separator
Execution
getLastOfPath() walks into Object.prototype
Persist
setPath() writes attacker value onto prototype
Impact
Trigger downstream auth bypass or crash via polluted property

Vulnerability AssessmentAI

Exploitation Exploitation requires that the target application (1) mounts i18next-http-middleware's missingKeyHandler - or any other route that forwards untrusted request bodies into i18next.t with saveMissing: true and a backend.create implementation - and exposes it to attacker-reachable input without authentication, AND (2) runs with the default keySeparator ('.') rather than keySeparator: false. … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment The published CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H (9.1) treats the bug as a remote, unauthenticated high-impact integrity/availability flaw, which is plausible for a generic prototype-pollution primitive but materially overstates real-world exposure: the description itself constrains exploitation to applications that (a) wire missingKeyHandler (or an equivalent saveMissing route) to untrusted input AND (b) leave keySeparator at its default. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario A public-facing Node.js web app uses i18next with i18next-http-middleware and exposes the missingKeyHandler endpoint so that browsers can report untranslated strings. The attacker sends an HTTP request that registers a missing key of '__proto__.isAdmin' with value true; writeFile() splits the key on '.', setPath() walks into Object.prototype, and every subsequent object in the process now reports isAdmin === true, letting the attacker bypass a property-based authorization check or crash request handlers that branch on prototype state. …
Remediation Vendor-released patch: upgrade i18next-fs-backend to 2.6.6, which adds an UNSAFE_KEYS guard (__proto__, constructor, prototype) inside getLastOfPath so unsafe traversals are dropped silently while legitimate dotted keys like 'header.title' continue to work - see commit 3ab0448087da6935a40117f904b7457281f963f4 and advisory GHSA-2933-q333-qg83. … Detailed patch versions, workarounds, and compensating controls in full report.

Recommended ActionAI

Within 24 hours: Conduct inventory of all applications using i18next-fs-backend; document which instances expose missingKeyHandler to untrusted external input; implement emergency input validation to reject translation keys containing '__proto__' or similar prototype-chain segments. …

Sign in for detailed remediation steps and compensating controls.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

EUVD-2026-37005 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy