{"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","slug":"CVE-2026-118257","body":"## Overview\n\nVue 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.\n\n## Affected\n\n- `vue-i18n = 9.14.5`\n- `vue-i18n = 10.0.8`\n- `vue-i18n >= 11.1.10, < 11.4.14`\n- `vue-i18n >= 12.0.0-alpha.4, < 12.0.0-alpha.5`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Package advisory (CVE-2026-118257)\n\nAffected packages:\n\n- `vue-i18n = 9.14.5`\n- `vue-i18n = 10.0.8`\n- `vue-i18n >= 11.1.10, < 11.4.14`\n- `vue-i18n = 12.0.0-alpha.4`\n- `petite-vue-i18n = 9.14.5`\n- `petite-vue-i18n = 10.0.8`\n- `petite-vue-i18n >= 11.1.10, < 11.4.14`\n- `petite-vue-i18n = 12.0.0-alpha.4`\n- `@intlify/core-base = 9.14.5`\n- `@intlify/core-base = 10.0.8`\n- `@intlify/core-base >= 11.1.10, < 11.4.14`\n- `@intlify/core-base = 12.0.0-alpha.4`\n- `@intlify/core = 9.14.5`\n- `@intlify/core = 10.0.8`\n- `@intlify/core >= 11.1.10, < 11.4.14`\n- `@intlify/core = 12.0.0-alpha.4`\n- `@intlify/vue-i18n-core = 9.14.5`\n- `@intlify/vue-i18n-core = 10.0.8`\n- `@intlify/vue-i18n-core >= 11.1.10, < 11.4.14`\n- `@intlify/vue-i18n-core = 12.0.0-alpha.4`\n- `@intlify/shared = 9.14.5`\n- `@intlify/shared = 10.0.8`\n- `@intlify/shared >= 11.1.10, < 11.4.14`\n- `@intlify/shared = 12.0.0-alpha.4`\n\nPatched in:\n\n- `vue-i18n 11.4.14`\n- `vue-i18n 12.0.0-alpha.5`\n- `petite-vue-i18n 11.4.14`\n- `petite-vue-i18n 12.0.0-alpha.5`\n- `@intlify/core-base 11.4.14`\n- `@intlify/core-base 12.0.0-alpha.5`\n- `@intlify/core 11.4.14`\n- `@intlify/core 12.0.0-alpha.5`\n- `@intlify/vue-i18n-core 11.4.14`\n- `@intlify/vue-i18n-core 12.0.0-alpha.5`\n- `@intlify/shared 11.4.14`\n- `@intlify/shared 12.0.0-alpha.5`\n\nSource: https://github.com/advisories/GHSA-83rm-6c8r-g728","depth":"twilight","depthScore":40,"depthScoreParts":{"impact":39.6,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}