VDB
KO
MEDIUM

GHSA-f4jp-rw7w-ccwg

gettext-converter: Prototype pollution in js2i18next() via crafted translation keys

Quick fix

GHSA-f4jp-rw7w-ccwg — gettext-converter: upgrade to the fixed version with the command below.

npm install gettext-converter@1.3.3

Details

### Impact

`js2i18next()` is vulnerable to prototype pollution. When converting translations, it splits nested keys on the key separator (default `##`) and uses each segment as a dynamic object key while building the output object. A key whose segment is `__proto__` (e.g. `__proto__##gcPolluted`) causes the converter to resolve `Object.prototype` as the nested write target and assign the translated value onto it, polluting `Object.prototype` for the whole runtime.

Any application that converts translation data (PO / i18next JS objects) originating from an untrusted or user-controlled source is affected. Prototype pollution can lead to denial of service and, depending on the surrounding application, may enable further attacks.

### Patches

Fixed in `gettext-converter@1.3.3`. Key segments equal to `__proto__`, `constructor`, or `prototype` are now rejected before being used as dynamic object keys.

### Workarounds

Upgrade to `1.3.3`. If upgrading is not immediately possible, sanitize/validate translation keys before passing them to `js2i18next()` and reject any key whose `##`-separated segments include `__proto__`, `constructor`, or `prototype`.

Are you affected?

Enter the version of the package you're using.

Affected packages

npm / gettext-converter
Introduced in: 0 Fixed in: 1.3.3
Fix npm install gettext-converter@1.3.3

References