Skip to main content

Vue I18n CVE-2026-118257

| EUVDEUVD-2026-112359 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-28 GitHub_M GHSA-83rm-6c8r-g728
7.2
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Supply payload via untrusted parameter or translation
  2. Delivery
    Payload placed inside iframe srcdoc value
  3. Exploit
    sanitizeTranslatedHtml escapes value but leaves srcdoc active
  4. Execution
    Browser entity-decodes srcdoc as same-origin nested document
  5. Impact
    Script executes in application origin (DOM XSS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires all of the following in the host application: (1) escapeParameter enabled (escapeParameterHtml in the Legacy API), which routes the translated string through sanitizeTranslatedHtml(); (2) the application renders translations as HTML, for example via v-html; and (3) attacker-controlled content reaches an <iframe srcdoc="..."> value - reachable three ways per the advisory: an untrusted parameter the message places inside srcdoc, untrusted/crowdsourced or stored message content that itself contains <iframe srcdoc>, or untrusted named values passed in the same call as a list (GHSA-8rc2-428q-7ww3, where named values are not escaped). Limiting factors: this is not a default-configuration flaw - apps that do not enable escapeParameter, do not render translations with v-html, or keep srcdoc out of translations are unaffected, and rendering through the <i18n-t> component (component interpolation) is explicitly not affected. The vendor notes v9 and v10 will not be fixed and advises migrating to v11.

Impact

Signals point to a real but conditional, non-urgent issue rather than a top-tier emergency. The CVSS 3.1 base score is 7.2 (High) with vector AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N, i.e. network vector, low complexity, PR:N (unauthenticated per the vector), and a scope change reflecting that injected script executes in the victim's browser origin. However, the official vector does not capture the dominant limiting factor documented in the GHSA advisory: exploitation only works when the host application enables escapeParameter (escapeParameterHtml in the Legacy API) AND renders translations as HTML through v-html AND lets untrusted content reach an iframe srcdoc value - a configuration the vendor documentation explicitly warns against. That heavily narrows real-world exposure, so the headline High score overstates the risk for typical deployments. No EPSS score is provided and the CVE is not in CISA KEV, so there is no evidence of active or widespread exploitation; the signal set shows no active-exploitation indicators. A PoC reference exists in the GHSA advisory (a short JavaScript snippet demonstrating the sanitizer bypass); it is not verified as a working weaponized exploit. The vuln.today decision label is 'this_week', consistent with a conditional DOM-XSS sanitizer-bypass that maintainers have already patched. Net: treat as a prompt patch/review item for apps using the vulnerable HTML-rendering pattern, not a drop-everything emergency.

Exploit ScenarioDerived

An attacker places an <iframe srcdoc="..."> payload into untrusted content that a Vue app renders - for example a crowdsourced or stored translation string, or a user-controlled parameter that the message inserts inside srcdoc. In an app that enables escapeParameter and renders the translation via v-html, sanitizeTranslatedHtml() escapes the value and neutralizes on* handlers but leaves the srcdoc attribute active, so the browser entity-decodes the value, parses it as a same-origin nested document, and runs the attacker's script (DOM-based XSS). A PoC demonstrating the sanitizer bypass is published in the GHSA advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 28, 2026

DOM-based cross-site scripting in Vue I18n's sanitizeTranslatedHtml() lets attacker-influenced content survive sanitization when it is placed inside an <iframe srcdoc="..."> value: the sanitizer escapes markup and neutralizes on* handlers using character references, but the browser re-decodes that value and parses it as a same-origin nested document, so the injected markup executes script. Applications are exposed only in a specific configuration - escapeParameter (escapeParameterHtml in the Legacy API) enabled, translations rendered as HTML (for example with v-html), and untrusted data reaching an srcdoc value via a parameter, untrusted/stored message content, or unescaped named values passed alongside a list (GHSA-8rc2-428q-7ww3) - while rendering through <i18n-t> is not affected. Affected ranges are vue-i18n 11.1.10 through 11.4.13 and 12.0.0-alpha.4, with unsupported 9.14.5 and 10.0.8 also vulnerable and left unfixed; the vendor advisory includes a public PoC snippet illustrating the bypass, which is not verified as working exploit code, and there is no confirmed active exploitation (no CISA KEV listing).

RemediationAI

Vendor-released patch: upgrade to vue-i18n 11.4.14 (or 12.0.0-alpha.5 for the 12.0.0 alpha line), which neutralizes the srcdoc attribute itself by escaping its leading 's' to &#115; - see the advisory at https://github.com/intlify/vue-i18n/security/advisories/GHSA-83rm-6c8r-g728 and PR https://github.com/intlify/vue-i18n/pull/2679 (commit 43391d20e7c85403cb59bdb21b5d542819f54042). Versions 9.14.5 and 10.0.8 are affected and will not be patched, so v9/v10 deployments must migrate to v11; petite-vue-i18n at those versions likewise has no fixed release. Where upgrading is not immediately possible, the vendor's workarounds are: stop rendering translations that can contain untrusted content with v-html and use component interpolation (<i18n-t>) instead, which is not affected because it does not render translations as HTML, and remove srcdoc from translation messages and avoid passing values into it - the trade-off is that any remaining srcdoc usage in trusted translations is unsupported, since only the patched sanitizer makes that position inert. Because the flaw requires escapeParameter plus HTML rendering of translations, applications that do not enable escapeParameter or do not render translations as HTML are unaffected and need no compensating change.

Affected VersionsENISA

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

Affected Packages

npm @intlify/core fix: 11.4.14, 12.0.0-alpha.5
npm @intlify/core-base fix: 11.4.14, 12.0.0-alpha.5
npm @intlify/shared fix: 11.4.14, 12.0.0-alpha.5
npm @intlify/vue-i18n-core fix: 11.4.14, 12.0.0-alpha.5
npm petite-vue-i18n fix: 11.4.14, 12.0.0-alpha.5
npm vue-i18n fix: 11.4.14, 12.0.0-alpha.5

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 6 packages in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Vue I18n is the internationalization plugin for Vue.js; when escapeParameter is enabled it routes the final translated string through sanitizeTranslatedHtml() (packages/shared/src/sanitize.ts), a string-level sanitizer introduced to fix CVE-2025-53892 (GHSA-x8qp-wqqm-57ph). That sanitizer escapes <, >, " and ' inside quoted attribute values, rewrites the 'on' of event-handler attributes to &#111;n, and replaces javascript: URLs in href/src/action/formaction with about:blank. The flaw is a context-confusion/encoding problem (CWE-79, CWE-116): the srcdoc attribute's value is not ordinary text but a complete HTML document, which the browser entity-decodes and then parses again in the same origin, so the escaping and the handler neutralization are both undone at the second parse - markup inside srcdoc survives with or without escaping. The upstream fix neutralizes the attribute itself by rewriting 's' of srcdoc to &#115;, since character references are not decoded in attribute names; the patch (PR 2679, commit 43391d2) also covers uppercase/mixed-case srcdoc, whitespace around '=', single-quoted and unquoted values, and boundaries such as '>', '/', and newlines, while leaving srcdoc text, attribute values, and names that merely contain srcdoc (e.g. data-srcdoc) untouched. Three reachability paths exist: an untrusted parameter that a message places inside srcdoc, message content that itself contains <iframe srcdoc>, or untrusted named values passed in the same call as a list, where named values are not escaped (GHSA-8rc2-428q-7ww3). The trigger requires the host application to combine escapeParameter, HTML rendering of translations, and untrusted content in an srcdoc position; the exact renderer behavior beyond v-html is not described in the available sources.

Know when Vue I18N gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 6.1 MEDIUM

Unauthenticated attacker-supplied content (PR:N/AV:N) runs script in a victim's browser who must load the rendered page (UI:R), crossing origin boundary (S:C); impact limited to C:L/I:L, A:N.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Oct 28, 2026 - 19:03 EUVD
CVE Published
Oct 28, 2026 - 18:23 cve.org
HIGH 7.2

DescriptionCVE.org

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.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 6 npm packages depend on @intlify/core-base (5 direct, 1 indirect)
  • 8 npm packages depend on @intlify/shared (7 direct, 1 indirect)
  • 1 npm packages depend on vue-i18n (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 11.1.10 and other introduced versions.

Technical POC Analysis

CWE-79 (cross-site scripting), with CWE-116 (improper encoding/escaping of output) as the underlying mechanism.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

CVE-2026-118257 is a high-severity DOM-based cross-site scripting flaw in the Vue I18n library that can let attackers execute scripts in the context of your web application. Only applications using specific configurations (escapeParameter enabled and translations rendered as HTML) are at risk; if exploited, an attacker could steal user sessions or perform actions on behalf of users, undermining trust in the affected product.

Business Impact: High
Compensating Controls

Disable escapeParameter/escapeParameterHtml and avoid rendering translations as HTML (e.g., v-html) until a patch is available; use <i18n-t> components where possible; enforce strict Content Security Policy and sanitize all untrusted inputs; monitor vendor advisory for updates.

Threat Intelligence Overview

Prevalence
High
de facto internationalization plugin for Vue.js, heavy npm usage
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy