Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify exposed missingKeyHandler endpoint
-
DeliverySend HTTP request with key '__proto__.polluted'
-
ExploitwriteFile() splits key on '.' separator
-
ExecutiongetLastOfPath() walks into Object.prototype
-
PersistsetPath() writes attacker value onto prototype
-
ImpactTrigger downstream auth bypass or crash via polluted property
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V3 - Web Frontend Security Prototype pollution prevention
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | 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. The attacker must be able to control the missing-key string so that segments such as '__proto__', 'constructor', or 'prototype' reach Backend.writeFile(). Apps that gate missingKeyHandler behind authentication, disable saveMissing, or set keySeparator: false are not exploitable through this path; the CVSS PR:N rating is therefore optimistic and assumes the worst-case default deployment of the middleware. |
| Impact | 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. Apps without that exact configuration are not affected through this attack path. There is no EPSS score, KEV listing, or SSVC decision provided in the input, and no public exploit identified at time of analysis - only the vendor advisory and fix commit are public, so this should be treated as a credible, patch-now issue for any service that proxies user input into i18next.t(..., { saveMissing: true }), but not as evidence of mass active exploitation. Confidentiality is rated N because the primitive writes to prototypes rather than directly reading data, but secondary C impact is plausible if polluted properties bypass auth checks downstream - defenders should not assume C:N translates to 'no data risk'. |
| Exploit ScenarioDerived | 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. No public PoC was supplied in the input but the security test suite added in the fix commit demonstrates the primitive end-to-end. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 15, 2026
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. No public exploit identified at time of analysis, but a coordinated-disclosure advisory (GHSA-2933-q333-qg83) and a fixing commit are public, and downstream impact can include denial of service, configuration poisoning, and bypass of property-based security checks.
RemediationAI
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. As defence-in-depth, also upgrade i18next-http-middleware to 3.9.7. If immediate upgrade is not possible, mount the missingKeyHandler route behind authentication or remove it entirely; alternatively disable missing-key persistence by setting saveMissing: false or removing the backend.create implementation (trade-off: client-reported missing keys will no longer be persisted); or set keySeparator: false in i18next options to disable backend key splitting, which closes the attack but also disables nested translation keys across the application and will break any namespaces that rely on dotted lookups.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
i18next-fs-backend is a Node.js filesystem backend for the i18next internationalization framework that persists translation strings - including 'missing' keys reported by clients - to JSON files on disk. The vulnerability is a CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes / 'prototype pollution') flaw in the in-memory tree walker getLastOfPath() inside lib/utils.js, which is used by setPath()/pushPath() when writeFile() flushes queued missing-key entries. Because each missing-key string is split on keySeparator (default '.') and then each segment is used as a property lookup on a plain object, an attacker-controlled segment of '__proto__', 'constructor', or 'prototype' walks the helper into Object.prototype and lets subsequent assignments mutate every JavaScript object in the process. CPE coverage is cpe:2.3:a:i18next:i18next-fs-backend:*:*:*:*:*:*:*:*, and the attack path is realistically reached through the companion i18next-http-middleware missingKeyHandler route (which also received a defence-in-depth fix in 3.9.7).
Know when Prototype Pollution gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.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).
Blast Radius
ecosystem impact- 44 npm packages depend on i18next-fs-backend (4 direct, 40 indirect)
Ecosystem-wide dependent count for version 2.6.6.
Executive ViewAI
A prototype pollution vulnerability in i18next-fs-backend (CVE-2026-48713) allows attackers to inject arbitrary properties into application configuration objects via untrusted translation inputs. Organizations using this library face risks of configuration tampering, service disruption, and bypass of property-based security controls-particularly concerning where configuration properties enforce access policies or feature flags. The critical 9.1 CVSS score combined with public disclosure of technical details necessitates urgent remediation.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Deploy input sanitization on all translation-key handlers, rejecting patterns containing '__proto__' or other unsafe property-chain segments; (2) Apply WAF rules to block requests containing prototype pollution payloads; (3) Restrict external access to missingKeyHandler through authentication/authorization controls; (4) Enable security monitoring and alerting for unauthorized application object modifications.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
More in Prototype Pollution
View allPrototype pollution in Adobe Acrobat Reader versions 24.001.30356, 26.001.21367 and earlier enables arbitrary code execu
All versions of package dojo are vulnerable to Prototype Pollution via the setObject function. Rated critical severity (
Prototype pollution in the farinspace Partners WordPress plugin (versions up to and including 0.2.0) enables remote unau
The package handlebars before 4.7.7 are vulnerable to Prototype Pollution when selecting certain compiling options to co
This affects the package ini before 1.3.6. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitabl
Prototype pollution vulnerability in 'deephas' versions 1.0.0 through 1.0.5 allows attacker to cause a denial of service
A Prototype Pollution issue in Cronvel Tree-kit v.0.7.4 and before allows a remote attacker to execute arbitrary code vi
A Prototype Pollution issue in Aliconnect /sdk v.0.0.6 allows an attacker to execute arbitrary code via the aim function
All versions of the package safe-eval are vulnerable to Prototype Pollution via the safeEval function, due to improper s
This affects the package vm2 before 3.9.4 via a Prototype Pollution attack vector, which can lead to execution of arbitr
Prototype Pollution in chargeover redoc v2.0.9-rc.69 allows attackers to execute arbitrary code or cause a Denial of Ser
alizeait unflatto <= 1.0.2 was discovered to contain a prototype pollution via the method exports.unflatto at /dist/inde
EUVD-2026-37005
GHSA-2933-q333-qg83
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB