Vue I18n: escapeParameter does not prevent XSS through srcdoc in translation messages
- 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: none
- Automatable: yes
- Technical impact: partial
Summary
Vue I18n, the internationalization plugin for Vue.js, is affected, including older unsupported releases in the 9.x and 10.x lines. When applications enable escapeParameter and render translated messages as HTML via v-html, attacker-controlled content placed in an iframe srcdoc attribute can run scripts in the user's browser, leading to cross-site scripting.
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 11.1.10 until 11.4.14 and from 12.0.0-alpha.4 until 12.0.0-alpha.5, sanitizeTranslatedHtml() escapes markup and event-handler text inside an iframe srcdoc value but leaves the srcdoc attribute active. Browsers decode the character references and parse the value as a same-origin nested HTML document, allowing attacker-controlled parameters or translation content placed in srcdoc to execute script when applications enable escapeParameter and render translations as HTML through v-html. Versions 9.14.5 and 10.0.8 are also affected and are no longer supported, while i18n-t rendering is not affected. 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: none · Automatable: yes · Technical impact: partial
- Record last updated
Affected versions
- intlify vue-i18n
From 11.1.10 · fixed in 11.4.14; From 12.0.0-alpha.4 · fixed in 12.0.0-alpha.5
- vue-i18nnpm
9.14.5
- vue-i18nnpm
10.0.8
- vue-i18nnpm
From 11.1.10 · fixed in 11.4.14
- vue-i18nnpm
From 12.0.0-alpha.4 · fixed in 12.0.0-alpha.5
- petite-vue-i18nnpm
9.14.5
- petite-vue-i18nnpm
10.0.8
- petite-vue-i18nnpm
From 11.1.10 · fixed in 11.4.14
- petite-vue-i18nnpm
From 12.0.0-alpha.4 · fixed in 12.0.0-alpha.5
- @intlify/core-basenpm
9.14.5
- @intlify/core-basenpm
10.0.8
- @intlify/core-basenpm
From 11.1.10 · fixed in 11.4.14
- @intlify/core-basenpm
From 12.0.0-alpha.4 · fixed in 12.0.0-alpha.5
- @intlify/corenpm
9.14.5
- @intlify/corenpm
10.0.8
- @intlify/corenpm
From 11.1.10 · fixed in 11.4.14
- @intlify/corenpm
From 12.0.0-alpha.4 · fixed in 12.0.0-alpha.5
- @intlify/vue-i18n-corenpm
9.14.5
- @intlify/vue-i18n-corenpm
10.0.8
- @intlify/vue-i18n-corenpm
From 11.1.10 · fixed in 11.4.14
- @intlify/vue-i18n-corenpm
From 12.0.0-alpha.4 · fixed in 12.0.0-alpha.5
- @intlify/sharednpm
9.14.5
- @intlify/sharednpm
10.0.8
- @intlify/sharednpm
From 11.1.10 · fixed in 11.4.14
- @intlify/sharednpm
From 12.0.0-alpha.4 · fixed in 12.0.0-alpha.5