Cross-site scripting in Vue I18n translations through iframe srcdoc
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Cross-site scripting
- Confidentiality · integrity · availability
- Low · Low · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-79.
Summary
Vue I18n, the internationalization plugin for Vue.js, is affected from 11.1.10 before 11.4.14, from 12.0.0-alpha.4 before 12.0.0-alpha.5, and at 9.14.5 and 10.0.8. The sanitizeTranslatedHtml() function escapes text in an iframe srcdoc value but leaves the srcdoc attribute active, so the browser decodes the value and parses it as a same-origin nested document that runs script (CWE-79). An attacker who controls parameters or translation content can run script when escapeParameter is enabled and v-html renders translations.
Written with Claude Haiku 5.5 from the sources below · 2026-10-30
Description from the CNA
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| intlify | vue-i18n | = 9.14.5; = 10.0.8; 11.1.10 to before 11.4.14; 12.0.0-alpha.4 to before 12.0.0-alpha.5 | 11.4.14, 12.0.0-alpha.5 | Patch available | CNA |
| — | vue-i18n (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | vue-i18n (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | vue-i18n (npm) | 11.1.10 to before 11.4.14 | 11.4.14 | Patch available | GHSA-83rm-6c8r-g728 |
| — | vue-i18n (npm) | 12.0.0-alpha.4 to before 12.0.0-alpha.5 | 12.0.0-alpha.5 | Patch available | GHSA-83rm-6c8r-g728 |
| — | petite-vue-i18n (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | petite-vue-i18n (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | petite-vue-i18n (npm) | 11.1.10 to before 11.4.14 | 11.4.14 | Patch available | GHSA-83rm-6c8r-g728 |
| — | petite-vue-i18n (npm) | 12.0.0-alpha.4 to before 12.0.0-alpha.5 | 12.0.0-alpha.5 | Patch available | GHSA-83rm-6c8r-g728 |
| — | @intlify/core-base (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | @intlify/core-base (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | @intlify/core-base (npm) | 11.1.10 to before 11.4.14 | 11.4.14 | Patch available | GHSA-83rm-6c8r-g728 |
| — | @intlify/core-base (npm) | 12.0.0-alpha.4 to before 12.0.0-alpha.5 | 12.0.0-alpha.5 | Patch available | GHSA-83rm-6c8r-g728 |
| — | @intlify/core (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | @intlify/core (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | @intlify/core (npm) | 11.1.10 to before 11.4.14 | 11.4.14 | Patch available | GHSA-83rm-6c8r-g728 |
| — | @intlify/core (npm) | 12.0.0-alpha.4 to before 12.0.0-alpha.5 | 12.0.0-alpha.5 | Patch available | GHSA-83rm-6c8r-g728 |
| — | @intlify/vue-i18n-core (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | @intlify/vue-i18n-core (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | @intlify/vue-i18n-core (npm) | 11.1.10 to before 11.4.14 | 11.4.14 | Patch available | GHSA-83rm-6c8r-g728 |
| — | @intlify/vue-i18n-core (npm) | 12.0.0-alpha.4 to before 12.0.0-alpha.5 | 12.0.0-alpha.5 | Patch available | GHSA-83rm-6c8r-g728 |
| — | @intlify/shared (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | @intlify/shared (npm) | — | — | No fix listed | GHSA-83rm-6c8r-g728 |
| — | @intlify/shared (npm) | 11.1.10 to before 11.4.14 | 11.4.14 | Patch available | GHSA-83rm-6c8r-g728 |
| — | @intlify/shared (npm) | 12.0.0-alpha.4 to before 12.0.0-alpha.5 | 12.0.0-alpha.5 | Patch available | GHSA-83rm-6c8r-g728 |
- vue-i18n Vendorintlify Affected = 9.14.5; = 10.0.8; 11.1.10 to before 11.4.14; 12.0.0-alpha.4 to before 12.0.0-alpha.5 Fixed in 11.4.14, 12.0.0-alpha.5 Patch available CNA
- vue-i18n (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- vue-i18n (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- vue-i18n (npm) Vendor— Affected 11.1.10 to before 11.4.14 Fixed in 11.4.14 Patch available GHSA-83rm-6c8r-g728
- vue-i18n (npm) Vendor— Affected 12.0.0-alpha.4 to before 12.0.0-alpha.5 Fixed in 12.0.0-alpha.5 Patch available GHSA-83rm-6c8r-g728
- petite-vue-i18n (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- petite-vue-i18n (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- petite-vue-i18n (npm) Vendor— Affected 11.1.10 to before 11.4.14 Fixed in 11.4.14 Patch available GHSA-83rm-6c8r-g728
- petite-vue-i18n (npm) Vendor— Affected 12.0.0-alpha.4 to before 12.0.0-alpha.5 Fixed in 12.0.0-alpha.5 Patch available GHSA-83rm-6c8r-g728
- @intlify/core-base (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- @intlify/core-base (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- @intlify/core-base (npm) Vendor— Affected 11.1.10 to before 11.4.14 Fixed in 11.4.14 Patch available GHSA-83rm-6c8r-g728
- @intlify/core-base (npm) Vendor— Affected 12.0.0-alpha.4 to before 12.0.0-alpha.5 Fixed in 12.0.0-alpha.5 Patch available GHSA-83rm-6c8r-g728
- @intlify/core (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- @intlify/core (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- @intlify/core (npm) Vendor— Affected 11.1.10 to before 11.4.14 Fixed in 11.4.14 Patch available GHSA-83rm-6c8r-g728
- @intlify/core (npm) Vendor— Affected 12.0.0-alpha.4 to before 12.0.0-alpha.5 Fixed in 12.0.0-alpha.5 Patch available GHSA-83rm-6c8r-g728
- @intlify/vue-i18n-core (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- @intlify/vue-i18n-core (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- @intlify/vue-i18n-core (npm) Vendor— Affected 11.1.10 to before 11.4.14 Fixed in 11.4.14 Patch available GHSA-83rm-6c8r-g728
- @intlify/vue-i18n-core (npm) Vendor— Affected 12.0.0-alpha.4 to before 12.0.0-alpha.5 Fixed in 12.0.0-alpha.5 Patch available GHSA-83rm-6c8r-g728
- @intlify/shared (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- @intlify/shared (npm) Vendor— Affected — Fixed in — No fix listed GHSA-83rm-6c8r-g728
- @intlify/shared (npm) Vendor— Affected 11.1.10 to before 11.4.14 Fixed in 11.4.14 Patch available GHSA-83rm-6c8r-g728
- @intlify/shared (npm) Vendor— Affected 12.0.0-alpha.4 to before 12.0.0-alpha.5 Fixed in 12.0.0-alpha.5 Patch available GHSA-83rm-6c8r-g728
Remediation
Upgrade vue-i18n, petite-vue-i18n and @intlify/core-base to 11.4.14 or 12.0.0-alpha.5. Versions 9.14.5 and 10.0.8 are no longer supported and have no fix, so move off them.
Written with Claude Haiku 5.5 from the sources below · 2026-10-30
- Fix · CNA vue-i18n (intlify) Fixed in 11.4.14, 12.0.0-alpha.5
- Fix · GHSA-83rm-6c8r-g728 vue-i18n (npm) Fixed in 11.4.14 Advisory →
- Fix · GHSA-83rm-6c8r-g728 vue-i18n (npm) Fixed in 12.0.0-alpha.5 Advisory →
- Fix · GHSA-83rm-6c8r-g728 petite-vue-i18n (npm) Fixed in 11.4.14 Advisory →
- Fix · GHSA-83rm-6c8r-g728 petite-vue-i18n (npm) Fixed in 12.0.0-alpha.5 Advisory →
- Fix · GHSA-83rm-6c8r-g728 @intlify/core-base (npm) Fixed in 11.4.14 Advisory →
- Fix · GHSA-83rm-6c8r-g728 @intlify/core-base (npm) Fixed in 12.0.0-alpha.5 Advisory →
- Fix · GHSA-83rm-6c8r-g728 @intlify/core (npm) Fixed in 11.4.14 Advisory →
- Fix · GHSA-83rm-6c8r-g728 @intlify/core (npm) Fixed in 12.0.0-alpha.5 Advisory →
- Fix · GHSA-83rm-6c8r-g728 @intlify/vue-i18n-core (npm) Fixed in 11.4.14 Advisory →
- Fix · GHSA-83rm-6c8r-g728 @intlify/vue-i18n-core (npm) Fixed in 12.0.0-alpha.5 Advisory →
- Fix · GHSA-83rm-6c8r-g728 @intlify/shared (npm) Fixed in 11.4.14 Advisory →
- Fix · GHSA-83rm-6c8r-g728 @intlify/shared (npm) Fixed in 12.0.0-alpha.5 Advisory →
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
Not affected: 1 product
- OpenShift API for Data Protection
Timeline
- 2026-10-28 Threatist record created from CVE-2026-118257
- 2026-10-28 Alias added: GHSA-83rm-6c8r-g728
- 2026-10-28 Fix available: npm/@intlify/[email protected], npm/@intlify/[email protected], npm/@intlify/[email protected] +9 · GHSA-83rm-6c8r-g728
- 2026-10-28 CVSS score added · GHSA-83rm-6c8r-g728
- 2026-10-28 Weakness changed · GHSA-83rm-6c8r-g728
- 2026-10-28 6 new references · GHSA-83rm-6c8r-g728
- 2026-10-29 CISA SSVC decision points changed
- 2026-10-29 Priority changed: MEDIUM → LOW
- 2026-10-30 Affected versions changed · Red Hat
- 2026-10-30 CVSS score added · Red Hat
References
Other 6
- https://github.com/intlify/vue-i18n/security/advisories/GHSA-83rm-6c8r-g728
- https://github.com/intlify/vue-i18n/pull/2679
- https://github.com/intlify/vue-i18n/commit/43391d20e7c85403cb59bdb21b5d542819f54042
- https://github.com/intlify/vue-i18n/releases/tag/v11.4.14
- https://github.com/intlify/vue-i18n/releases/tag/v12.0.0-alpha.5
- https://github.com/intlify/vue-i18n
More intlify vulnerabilities
- TI-2025-20407 Vue I18n Prototype Pollution in `handleFlatJson` CVSS 4.0HIGH 8.9
- TI-2024-35322 Prototype Pollution in @intlify/shared >=9.7.0 <= 10.0.4 CVSS 4.0MEDIUM 6.9
- TI-2025-33767 Intlify Vue I18n's escapeParameterHtml does not prevent DOM-based XSS via tag attributes like onerror CVSS 4.0MEDIUM 5.3
- TI-2024-35321 Cross-site Scripting vulnerability with prototype pollution in vue-i18n CVSS 4.0MEDIUM 5.3
- TI-2026-82143 Vue I18n escapeParameter misses named values when a list is passed CVSS 4.0LOW 2.1
Sources
- CVE-2026-118257 · CVE Program
- CVE-2026-118257 · NVD
- FIRST EPSS
- GHSA-83rm-6c8r-g728 · GitHub Advisory Database · CC BY 4.0
- CVE-2026-118257 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences