---
id: CVE-2026-118257
title: >-
  Vue I18n: escapeParameter does not prevent XSS through srcdoc in translation
  messages
summary: >-
  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 …
severity: high
cvss: 7.2
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N'
cvssSource: cna
cwe:
  - CWE-79
  - CWE-116
vendor: intlify
product: vue-i18n
affected:
  - vue-i18n = 9.14.5
  - vue-i18n = 10.0.8
  - 'vue-i18n >= 11.1.10, < 11.4.14'
  - 'vue-i18n >= 12.0.0-alpha.4, < 12.0.0-alpha.5'
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-10-29T15:43:29.896851Z'
published: '2026-10-28'
updated: '2026-10-29'
sourceUpdated: '2026-10-29T20:55:05.780Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-118257'
references:
  - url: >-
      https://github.com/intlify/vue-i18n/security/advisories/GHSA-83rm-6c8r-g728
    label: >-
      https://github.com/intlify/vue-i18n/security/advisories/GHSA-83rm-6c8r-g728
  - url: 'https://github.com/intlify/vue-i18n/pull/2679'
    label: 'https://github.com/intlify/vue-i18n/pull/2679'
  - url: >-
      https://github.com/intlify/vue-i18n/commit/43391d20e7c85403cb59bdb21b5d542819f54042
    label: >-
      https://github.com/intlify/vue-i18n/commit/43391d20e7c85403cb59bdb21b5d542819f54042
  - url: 'https://github.com/intlify/vue-i18n/releases/tag/v11.4.14'
    label: 'https://github.com/intlify/vue-i18n/releases/tag/v11.4.14'
  - url: 'https://github.com/intlify/vue-i18n/releases/tag/v12.0.0-alpha.5'
    label: 'https://github.com/intlify/vue-i18n/releases/tag/v12.0.0-alpha.5'
  - url: 'https://github.com/advisories/GHSA-83rm-6c8r-g728'
tags:
  - cve.org
  - ghsa
  - npm
epss: 0.00272
epssPercentile: 0.19605
aliases:
  - GHSA-83rm-6c8r-g728
ecosystem: npm
patched:
  - vue-i18n 11.4.14
  - vue-i18n 12.0.0-alpha.5
  - petite-vue-i18n 11.4.14
  - petite-vue-i18n 12.0.0-alpha.5
  - '@intlify/core-base 11.4.14'
  - '@intlify/core-base 12.0.0-alpha.5'
  - '@intlify/core 11.4.14'
  - '@intlify/core 12.0.0-alpha.5'
  - '@intlify/vue-i18n-core 11.4.14'
  - '@intlify/vue-i18n-core 12.0.0-alpha.5'
  - '@intlify/shared 11.4.14'
  - '@intlify/shared 12.0.0-alpha.5'
ingestedAt: '2026-10-28T21:18:49.944Z'
---

## Overview

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.

## Affected

- `vue-i18n = 9.14.5`
- `vue-i18n = 10.0.8`
- `vue-i18n >= 11.1.10, < 11.4.14`
- `vue-i18n >= 12.0.0-alpha.4, < 12.0.0-alpha.5`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Package advisory (CVE-2026-118257)

Affected packages:

- `vue-i18n = 9.14.5`
- `vue-i18n = 10.0.8`
- `vue-i18n >= 11.1.10, < 11.4.14`
- `vue-i18n = 12.0.0-alpha.4`
- `petite-vue-i18n = 9.14.5`
- `petite-vue-i18n = 10.0.8`
- `petite-vue-i18n >= 11.1.10, < 11.4.14`
- `petite-vue-i18n = 12.0.0-alpha.4`
- `@intlify/core-base = 9.14.5`
- `@intlify/core-base = 10.0.8`
- `@intlify/core-base >= 11.1.10, < 11.4.14`
- `@intlify/core-base = 12.0.0-alpha.4`
- `@intlify/core = 9.14.5`
- `@intlify/core = 10.0.8`
- `@intlify/core >= 11.1.10, < 11.4.14`
- `@intlify/core = 12.0.0-alpha.4`
- `@intlify/vue-i18n-core = 9.14.5`
- `@intlify/vue-i18n-core = 10.0.8`
- `@intlify/vue-i18n-core >= 11.1.10, < 11.4.14`
- `@intlify/vue-i18n-core = 12.0.0-alpha.4`
- `@intlify/shared = 9.14.5`
- `@intlify/shared = 10.0.8`
- `@intlify/shared >= 11.1.10, < 11.4.14`
- `@intlify/shared = 12.0.0-alpha.4`

Patched in:

- `vue-i18n 11.4.14`
- `vue-i18n 12.0.0-alpha.5`
- `petite-vue-i18n 11.4.14`
- `petite-vue-i18n 12.0.0-alpha.5`
- `@intlify/core-base 11.4.14`
- `@intlify/core-base 12.0.0-alpha.5`
- `@intlify/core 11.4.14`
- `@intlify/core 12.0.0-alpha.5`
- `@intlify/vue-i18n-core 11.4.14`
- `@intlify/vue-i18n-core 12.0.0-alpha.5`
- `@intlify/shared 11.4.14`
- `@intlify/shared 12.0.0-alpha.5`

Source: https://github.com/advisories/GHSA-83rm-6c8r-g728
