Skip to main content
← All vulnerabilities
CVE-2026-118257EUVD-2026-112359GHSA-83RM-6C8R-G728

Vue I18n: escapeParameter does not prevent XSS through srcdoc in translation messages

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 11.4.14, 12.0.0-alpha.5
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

  1. CVE published
  2. First seen by cve.now
  3. CISA SSVC assessment

    Exploitation: none · Automatable: yes · Technical impact: partial

  4. 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

References 5

GitHub · intlify/vue-i18n