CVE-2026-118256
NoneCVSS
—
EPSS
0.5%
Published
Oct 28, 2026
CISA due date
—
Cloudanix analysis
A translation feature in some web applications can let attackers slip harmful content onto pages when both numbered and named text placeholders are used together.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Moderate
- Impact
- Data Tampering
- Component
- Library
- Class
- XSS
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The escapeParams() function only processes the list interpolation branch and skips named values when both are supplied in the same translation call, allowing attacker-controlled markup to reach HTML rendering contexts even when escapeParameter is enabled.
Why it matters to the business
Applications that display user-supplied translations as HTML may expose users to phishing, form injection, or layout tampering; remediation urgency is elevated because the flaw affects widely used internationalization libraries with high downstream adoption.
How an attack unfolds
An attacker supplies a translation string containing both list and named placeholders, sets escapeParameter to true, and injects untrusted content into the named value; the library renders the named value without escaping, permitting markup insertion that can lead to script execution when combined with other sanitizer weaknesses.
How to fix it
Upgrade Vue I18n to 11.4.14 or 12.0.0-alpha.5 (or later) for all affected branches; until upgrades are complete, avoid mixing list and named parameters in the same translation call when escapeParameter is active and sanitize named values manually before passing them to the library.
How to confirm the fix worked
After patching, confirm the fixed version string appears in package metadata or lockfiles; test by supplying mixed list and named parameters with escapeParameter enabled and verify that named values are HTML-escaped in the output.
Typical attack path
- Identify an application endpoint that renders i18n translations containing both list and named parameters with escapeParameter enabled.
- Craft a malicious translation payload that places untrusted input in a named parameter while also supplying a list parameter.
- Submit the payload via user-controlled translation data or message catalog.
- Observe unsanitized HTML markup reflected in the rendered output.
- Escalate to phishing links, credential forms, or script execution if additional bypasses exist.
How to detect it
Search application logs and rendered page sources for translation calls that include both array-style and object-style parameters in the same invocation; inspect network responses or DOM snapshots for unexpected HTML tags or attributes originating from named interpolation values.
What your security team should do
- Prioritize upgrade of Vue I18n to 11.4.14 or 12.0.0-alpha.5 across all applications within the next sprint.
- Audit codebases for translation calls that combine list and named parameters while escapeParameter is enabled.
- Add automated dependency scanning rules to block future vulnerable versions of the library.
- Review HTML rendering paths that consume i18n output for additional output encoding controls.
The record
Vue I18n is the internationalization plugin for Vue.js. From 9.0.0-beta.5 until 11.4.14 and 12.0.0-alpha.5, enabling escapeParameter, called escapeParameterHtml in the Legacy API, does not escape named interpolation values when the same translation call supplies both list and named values because escapeParams() processes only the list branch. Applications that render translations as HTML and pass untrusted named values with a list can insert attacker-controlled markup, including phishing links, forms, and layout changes, and can permit script execution when combined with the srcdoc sanitizer bypass or on releases without the sanitizer. This issue is fixed in versions 11.4.14 and 12.0.0-alpha.5.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-62990 Shopper is a Headless e-commerce Admin Panel. CWE-79
- CVE-2026-117645 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')… CWE-79
- CVE-2026-94175 Unauthenticated Cross Site Scripting (XSS) in All In One Login <= 2.4.1 versions. CWE-79
- CVE-2026-7004 WIT SynApps Runtime through 1.4.11 contains a pre-authentication reflected cross-site… CWE-79
- CVE-2026-54855 Unauthenticated Cross Site Scripting (XSS) in Profile Builder <= 4.0.5 versions. CWE-79
- CVE-2026-48201 Unauthenticated Cross Site Scripting (XSS) in Fast Velocity Minify <= 3.5.7 versions. CWE-79
- CVE-2026-39739 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')… CWE-79
- CVE-2026-39786 Unauthenticated Cross Site Scripting (XSS) in BA Book Everything <= 1.8.33 versions. CWE-79