fix(deps): update dependency vue-i18n to v10.0.8 [security]#291
Open
renovate[bot] wants to merge 1 commit intonextfrom
Open
fix(deps): update dependency vue-i18n to v10.0.8 [security]#291renovate[bot] wants to merge 1 commit intonextfrom
renovate[bot] wants to merge 1 commit intonextfrom
Conversation
032ab92 to
692b4d3
Compare
54a8f8f to
fb72b48
Compare
fb72b48 to
d8dd23d
Compare
d8dd23d to
e86fba2
Compare
e21f2a4 to
d4a573a
Compare
809e092 to
221477f
Compare
221477f to
22984f6
Compare
22984f6 to
25685e1
Compare
25685e1 to
8616ddb
Compare
8616ddb to
421c934
Compare
336fc54 to
3aa0db3
Compare
ead4ffc to
8f32784
Compare
8f32784 to
d66c44f
Compare
d66c44f to
78ea3a8
Compare
78ea3a8 to
79cf8b2
Compare
79cf8b2 to
0957445
Compare
0957445 to
51f6eea
Compare
51f6eea to
2ac2a68
Compare
2ac2a68 to
fe45a03
Compare
fe45a03 to
46b4719
Compare
46b4719 to
5d733c4
Compare
5d733c4 to
0565e28
Compare
0565e28 to
667f94a
Compare
667f94a to
7596018
Compare
7596018 to
26bb4b5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
10.0.2→10.0.8^9.0.0→^10.0.0vue-i18n has cross-site scripting vulnerability with prototype pollution
CVE-2024-52809 / GHSA-9r9m-ffp6-9x4v
More information
Details
Vulnerability type
XSS
Description
vue-i18n can be passed locale messages to
createI18noruseI18n.we can then translate them using
tand$t.vue-i18n has its own syntax for local messages, and uses a message compiler to generate AST.
In order to maximize the performance of the translation function, vue-i18n uses bundler plugins such as
@intlify/unplugin-vue-i18nand bulder to convert the AST in advance when building the application.By using that AST as the locale message, it is no longer necessary to compile, and it is possible to translate using the AST.
The AST generated by the message compiler has special properties for each node in the AST tree to maximize performance. In the PoC example below, it is a
staticproperty, but that is just one of the optimizations.About details of special properties, see https://github.com/intlify/vue-i18n/blob/master/packages/message-compiler/src/nodes.ts
In general, the locale messages of vue-i18n are optimized during production builds using
@intlify/unplugin-vue-i18n,so there is always a property that is attached during optimization like this time.
But if you are using a locale message AST in development mode or your own, there is a possibility of XSS if a third party injects.
Reproduce (PoC)
Workarounds
Before v10.0.0, we can work around this vulnerability by using the regular compilation (
jit: falseof@intlify/unplugin-vue-i18nplugin configuration) way instead of jit compilation.References
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
@intlify/shared Prototype Pollution vulnerability
CVE-2024-52810 / GHSA-hjwq-mjwj-4x6c
More information
Details
Vulnerability type: Prototype Pollution
Affected Package:
Product: @intlify/shared
Version: 10.0.4
Vulnerability Location(s):
node_modules/@​intlify/shared/dist/shared.cjs:232:26Description:
The latest version of
@intlify/shared (10.0.4)is vulnerable to Prototype Pollution through the entry function(s)lib.deepCopy. An attacker can supply a payload withObject.prototypesetter to introduce or modify properties within the global prototype chain, causing denial of service (DoS) 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:
References
Prototype Pollution Leading to Remote Code Execution - An example of how prototype pollution can lead to command code injection.
OWASP Prototype Pollution Prevention Cheat Sheet - Best practices for preventing prototype pollution.
PortSwigger Guide on Preventing Prototype Pollution - A detailed guide to securing your applications against prototype pollution.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Vue I18n Allows Prototype Pollution in
handleFlatJsonCVE-2025-27597 / GHSA-p2ph-7g93-hw3m
More information
Details
Vulnerability type:
Prototype Pollution
Vulnerability Location(s):
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:
Severity
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:PReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
vue-i18n's escapeParameterHtml does not prevent DOM-based XSS through its tag attributes
CVE-2025-53892 / GHSA-x8qp-wqqm-57ph
More information
Details
Summary
The escapeParameterHtml: true option in Vue I18n is designed to protect against HTML/script injection by escaping interpolated parameters. However, this setting fails to prevent execution of certain tag-based payloads, such as
<img src=x onerror=...>, if the interpolated value is inserted inside an HTML context using v-html.This may lead to a DOM-based XSS vulnerability, even when using escapeParameterHtml: true, if a translation string includes minor HTML and is rendered via v-html.
Details
When escapeParameterHtml: true is enabled, it correctly escapes common injection points.
However, it does not sanitize entire attribute contexts, which can be used as XSS vectors via:
<img src=x onerror=alert(1)>PoC
In your Vue I18n configuration:
Use this interpolated payload:
const payload = '<script>alert("xss")</script>';Render the translation using v-html (even not using v-html):
<p v-html="$t('vulnerable', { payload })"></p>Expected: escaped content should render as text, not execute.
Actual: script executes in some environments (or the payload is partially parsed as HTML).
Impact
This creates a DOM-based Cross-Site Scripting (XSS) vulnerability despite enabling a security option (escapeParameterHtml) .
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
intlify/vue-i18n (vue-i18n)
v10.0.8Compare Source
What's Changed
🔒 Security Fixes
Full Changelog: intlify/vue-i18n@v10.0.7...v10.0.8
v10.0.7Compare Source
What's Changed
🐛 Bug Fixes
Full Changelog: intlify/vue-i18n@v10.0.6...v10.0.7
v10.0.6Compare Source
What's Changed
🔒 Security Fixes
handleFlatJson, about details see GHSA-p2ph-7g93-hw3mFull Changelog: intlify/vue-i18n@v10.0.5...v10.0.6
v10.0.5Compare Source
What's Changed
🔒 Security Fixes
Full Changelog: intlify/vue-i18n@v10.0.4...v10.0.5
v10.0.4Compare Source
This changelog is generated by GitHub Releases
What's Changed
Deprecate Legacy API mode
The Legacy API mode was the API mode compatible with v8 for Vue 2. When v9 was released, the Legacy API was provided to smooth the migration from v8 to v9.
Legacy API mode will be deprecated in v11, as previous vue-i18n releases have already provided the following to support migration to Composition API mode
For compatibility, Legacy API mode still works in v11, but will be removed entirely in v12, so Legacy API mode will not work after that version.
Deprecate Custom Directive
v-tThe advantage of
v-twas that it could optimize performance using the vue compiler transform and the pre-translation ofvue-i18n-extension.This feature was supported from Vue 2.
About details see the blog article
In Vue 3, due to the Composition API, the pre-translation of
vue-i18n-extensionis now limited only for global scope.In addition, Vue 3 Virtual DOM optimization has been introduced, and the optimization provided by
vue-i18n-extensionis no longer very effective. We need to require settings for SSR, the benefits of usingv-thave disappeared. And DX of templates usingv-tis not good. Custom directives do not work with key completion in editors (e.g. vscode).For compatibility,
v-tmode still works in v11, but will be removed entirely in v12, sov-twill not work after that version.Drop
tcand$tcfor Legacy API modeThese APIs had already deprecated in warning about being dropped in v11. docs says
Vue I18n maintenance Status
Vue I18n v8 is no longer supported after 2025. Vue I18n v9 and Vue I18n v10 is in maintenance mode after 2025 July.
With the release of Vue I18n v11, that version will become mainstream.
The maintenance detail status of Vue I18n v9 and Vue I18n v10 is as follows:
You can check the maintenance status on the docs
❗ Breaking Changes
$tcandtcby @kazupon in #2017v-tcustom directive by @kazupon in #2045⚡ Improvement Features
tmfunction should acceptDefineLocaleMessagekey type by @BobbieGoede in #2014🔒 Security Fixes
📝️ Documentations
👋 New Contributors
Full Changelog: intlify/vue-i18n@v10.0.4...v11.0.0
v10.0.3Compare Source
This changelog is generated by GitHub Releases
What's Changed
🐛 Bug Fixes
📝️ Documentations
New Contributors
Full Changelog: intlify/vue-i18n@v10.0.3...v10.0.4
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.