CVE-2026-48713
i18next-fs-backend vulnerable to prototype pollution via crafted missing-key string
Beschreibung
Auswirkungen
Die Versionen von i18next-fs-backend bis einschließlich 2.6.5 sind anfällig für Prototype Pollution, wenn sie verwendet werden, um fehlende Übersetzungs-Schlüssel zu speichern (z.B. über die missingKeyHandler-Funktion des i18next-http-middleware, die unvertrauenswürdigen Eingaben ausgesetzt ist). Die Funktion Backend.writeFile() teilt jede fehlende Schlüsselzeichenkette anhand der konfigurierten Trennzeichen (keySeparator, Standardwert .) auf, bevor sie den internen setPath()-Walker aufruft. Der Walker (implementiert in getLastOfPath in lib/utils.js) schützte sich nicht vor unsicheren Segmenten, sodass ein Schlüssel wie "__proto__.polluted" in ["__proto__", "polluted"] aufgeteilt und direkt in das Object.prototype geschrieben wurde. Dies ermöglicht es einem Angreifer, beliebige Eigenschaften auf das globale Objekt-Prototyp zu schreiben.
Je nach Anwendung können verschmutzte Prototyp-Eigenschaften zu Abstürzen führen, die Übersetzungsverhalten verfälschen, Konfigurationen vergiften oder Sicherheitsüberprüfungen basierend auf Eigenschaften umgehen.
Betroffene Konfiguration
Anwendungen sind direkt betroffen, wenn alle der folgenden Bedingungen erfüllt sind:
i18next-fs-backendbis einschließlich 2.6.5 ist als Backend konfiguriert.- Die
missingKeyHandlervoni18next-http-middleware(oder eine andere Route, die unvertrauenswürdige Anfragekörper ani18next.t(..., { ... })mitsaveMissing: trueweiterleitet) ist für unvertrauenswürdige Benutzer erreichbar. - Die Standardfunktionalität zum Aufteilen fehlender Schlüsselzeichenketten am
keySeparatorwird verwendet (d.h.keySeparatorist nicht auffalsegesetzt).
Anwendungen, die das Speichern von fehlenden Schlüsseln nicht unvertrauenswürdigen Eingaben aussetzen, sind über diesen Angriffsweg nicht direkt betroffen.
Patches
Ab i18next-fs-backend 2.6.6 behoben. Der Traversierungshilfe lehnt es nun ab, durch Segmente wie __proto__, constructor oder prototype zu gehen und löscht die schädliche Schreiboperation stillschweigend. Legitime Schlüssel mit Punkten (z.B. "header.title") bleiben unberührt.
Ein entsprechender Abwehrmaßnahmen-Patch wurde in i18next-http-middleware 3.9.7 veröffentlicht — siehe das begleitende Sicherheitsbulletin.
Workarounds
Wenn ein sofortiges Upgrade nicht möglich ist:
- Die
missingKeyHandlervoni18next-http-middlewaresollte für unvertrauenswürdige Benutzer nicht zugänglich gemacht werden (hinter einer Authentifizierung verstecken oder die Route entfernen). - Das Speichern fehlender Schlüssel deaktivieren (
saveMissing: false, oder keine Implementierung vonbackend.create) bei Schreibzugriffen durch unvertrauenswürdige Eingaben. - Den
keySeparatorin den i18next-Optionen auffalsesetzen, um das Aufteilen der Backend-Schlüssel zu deaktivieren (Hinweis: dies deaktiviert auch verschachtelte Übersetzungs-Schlüssel).
Ressourcen
- Ursprünglicher Bericht von @codeswhite.
- Begleitendes Sicherheitsbulletin in
i18next-http-middleware: GHSA-f49m-vf83-692w. - Vorherige Sicherheitsveröffentlichung von
i18next-fs-backend: GHSA-8847-338w-5hcj (Pfad-Traversierung überlng/ns, behoben in 2.6.4).
Metriken
Weakness-Klassen (CWE)
CWE-1321Variant
Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')
The product receives input from an upstream component that specifies attributes that are to be initialized or updated in an object, but it does not properly control modifications of attributes of the object prototype.
cwe.mitre.org →
Re-Analyse & Statuswechsel
Chronologie der NVD-Audit-Events für diese CVE — Reanalyses, CVSS-Updates, CPE-Diffs.
- Initial Analysis2026-06-17 16:39 UTC· nvd@nist.gov
- CPE Configuration: OR *cpe:2.3:a:i18next:i18next-fs-backend:*:*:*:*:*:node.js:*:* versions up to (excluding) 2.6.6
- Reference Type: GitHub, Inc.: https://github.com/i18next/i18next-fs-backend/commit/3ab0448087da6935a40117f904b7457281f963f4 Types: Patch
- Reference Type: GitHub, Inc.: https://github.com/i18next/i18next-fs-backend/security/advisories/GHSA-2933-q333-qg83 Types: Mitigation, Vendor Advisory
- New CVE Received2026-06-15 22:16 UTC· security-advisories@github.com
- Description: 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).
- CVSS V3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
- CWE: CWE-1321
- Reference: https://github.com/i18next/i18next-fs-backend/commit/3ab0448087da6935a40117f904b7457281f963f4
Betroffene Produkte
Aus der Hersteller-/CERT-Meldung extrahierte Produkte und Versionsbereiche. Ein Version-Range wie „<4.14.6“ impliziert die Update-Empfehlung „auf 4.14.6 oder höher aktualisieren“.
npm
i18next-fs-backend