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
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
Lifecycle Timeline
3DescriptionCVE.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
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.
More from same product – last 7 days
Prototype pollution in jsonata-js (all versions up to 2.2.0) allows remote unauthenticated attackers to inject arbitrary
Prototype pollution in RubyLouvre Avalon's Template Filter Handler (src/filters/index.js) allows remote unauthenticated
Remote prototype pollution in i18next-http-middleware before 3.9.7 allows unauthenticated attackers to write to Object.p
Prototype pollution in ApostropheCMS versions up to and including 4.30.0 allows an authenticated editor to poison Object
Denial of service in n8n workflow automation platform versions prior to 2.24.0 allows authenticated users with workflow
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-37005