Vue I18n: `escapeParameter` does not escape named values when the same call also passes a list
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 11.4.14, 12.0.0-alpha.5
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: poc
- Automatable: no
- Technical impact: partial
Summary
Vue I18n, the internationalization plugin for Vue.js, is affected in certain versions when escapeParameter is enabled and a translation call passes both list and named values. Applications that render translations as HTML and include untrusted named values can have attacker-controlled markup inserted, enabling phishing content, layout manipulation, or possibly script execution.
Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.
Read the original description
Vue I18n is the internationalization plugin for Vue.js. From 9.0.0-beta.5 until 11.4.14 and 12.0.0-alpha.5, enabling escapeParameter, called escapeParameterHtml in the Legacy API, does not escape named interpolation values when the same translation call supplies both list and named values because escapeParams() processes only the list branch. Applications that render translations as HTML and pass untrusted named values with a list can insert attacker-controlled markup, including phishing links, forms, and layout changes, and can permit script execution when combined with the srcdoc sanitizer bypass or on releases without the sanitizer. This issue is fixed in versions 11.4.14 and 12.0.0-alpha.5.
Timeline
- CVE published
- First seen by cve.now
- CISA SSVC assessment
Exploitation: poc · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- intlify vue-i18n
From 9.0.0-beta.5 · fixed in 11.4.14; From 12.0.0-alpha.1 · fixed in 12.0.0-alpha.5
- vue-i18nnpm
From 9.0.0-beta.5 · fixed in 11.4.14
- vue-i18nnpm
From 12.0.0-alpha.1 · fixed in 12.0.0-alpha.5
- @intlify/corenpm
From 9.0.0-beta.10 · fixed in 11.4.14
- @intlify/corenpm
From 12.0.0-alpha.1 · fixed in 12.0.0-alpha.5
- @intlify/core-basenpm
From 9.0.0-beta.12 · fixed in 11.4.14
- @intlify/core-basenpm
From 12.0.0-alpha.1 · fixed in 12.0.0-alpha.5
- petite-vue-i18nnpm
From 9.2.0-alpha.7 · fixed in 11.4.14
- petite-vue-i18nnpm
From 12.0.0-alpha.1 · fixed in 12.0.0-alpha.5
- @intlify/vue-i18n-corenpm
From 9.2.0-alpha.7 · fixed in 11.4.14
- @intlify/vue-i18n-corenpm
From 12.0.0-alpha.1 · fixed in 12.0.0-alpha.5