Intlify Vue I18n's escapeParameterHtml does not prevent DOM-based XSS via tag attributes like onerror
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- Passive
- Attack complexity
- Low
- Attack requirements
- None
- Impact type
- Cross-site scripting
- Confidentiality · integrity · availability
- None · None · None
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-79.
Summary
Vue I18n is the internationalization plugin for Vue.js. The escapeParameterHtml: true option in Vue I18n is designed to protect against HTML/script injection by escaping interpolated parameters. However, starting in version 9.0.0 and prior to versions 9.14.5, 10.0.8, and 11.1.0, this setting fails to prevent execution of certain tag-based payloads, such as <img src=x onerror=...>, if the interpolated value is inserted inside an HTML context using v-html. This may lead to a DOM-based XSS vulnerability, even when using escapeParameterHtml: true, if a translation string includes minor HTML and is rendered via v-html. Versions 9.14.5, 10.0.8, and 11.1.0 contain a fix for the issue.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- 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.0.0 to before 9.14.5; 10.0.0 to before 10.0.8; 11.0.0 to before 11.1.0 | 9.14.5, 10.0.8, 11.1.0 | Patch available | CNA |
| — | vue-i18n (npm) | 9.0.0 to before 9.14.5 | 9.14.5 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | vue-i18n (npm) | 10.0.0 to before 10.0.8 | 10.0.8 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | vue-i18n (npm) | 11.0.0 to before 11.1.10 | 11.1.10 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | @intlify/core (npm) | 9.0.0 to before 9.14.5 | 9.14.5 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | @intlify/core (npm) | 10.0.0 to before 10.0.8 | 10.0.8 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | @intlify/core (npm) | 11.0.0 to before 11.1.10 | 11.1.10 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | @intlify/core-base (npm) | 9.0.0 to before 9.14.5 | 9.14.5 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | @intlify/core-base (npm) | 10.0.0 to before 10.0.8 | 10.0.8 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | @intlify/core-base (npm) | 11.0.0 to before 11.1.10 | 11.1.10 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | @intlify/vue-i18n-core (npm) | 9.2.0 to before 9.14.5 | 9.14.5 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | @intlify/vue-i18n-core (npm) | 10.0.0 to before 10.0.8 | 10.0.8 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | @intlify/vue-i18n-core (npm) | 11.0.0 to before 11.1.10 | 11.1.10 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | petite-vue-i18n (npm) | 10.0.0 to before 10.0.8 | 10.0.8 | Patch available | GHSA-x8qp-wqqm-57ph |
| — | petite-vue-i18n (npm) | 11.0.0 to before 11.1.10 | 11.1.10 | Patch available | GHSA-x8qp-wqqm-57ph |
- vue-i18n Vendorintlify Affected 9.0.0 to before 9.14.5; 10.0.0 to before 10.0.8; 11.0.0 to before 11.1.0 Fixed in 9.14.5, 10.0.8, 11.1.0 Patch available CNA
- vue-i18n (npm) Vendor— Affected 9.0.0 to before 9.14.5 Fixed in 9.14.5 Patch available GHSA-x8qp-wqqm-57ph
- vue-i18n (npm) Vendor— Affected 10.0.0 to before 10.0.8 Fixed in 10.0.8 Patch available GHSA-x8qp-wqqm-57ph
- vue-i18n (npm) Vendor— Affected 11.0.0 to before 11.1.10 Fixed in 11.1.10 Patch available GHSA-x8qp-wqqm-57ph
- @intlify/core (npm) Vendor— Affected 9.0.0 to before 9.14.5 Fixed in 9.14.5 Patch available GHSA-x8qp-wqqm-57ph
- @intlify/core (npm) Vendor— Affected 10.0.0 to before 10.0.8 Fixed in 10.0.8 Patch available GHSA-x8qp-wqqm-57ph
- @intlify/core (npm) Vendor— Affected 11.0.0 to before 11.1.10 Fixed in 11.1.10 Patch available GHSA-x8qp-wqqm-57ph
- @intlify/core-base (npm) Vendor— Affected 9.0.0 to before 9.14.5 Fixed in 9.14.5 Patch available GHSA-x8qp-wqqm-57ph
- @intlify/core-base (npm) Vendor— Affected 10.0.0 to before 10.0.8 Fixed in 10.0.8 Patch available GHSA-x8qp-wqqm-57ph
- @intlify/core-base (npm) Vendor— Affected 11.0.0 to before 11.1.10 Fixed in 11.1.10 Patch available GHSA-x8qp-wqqm-57ph
- @intlify/vue-i18n-core (npm) Vendor— Affected 9.2.0 to before 9.14.5 Fixed in 9.14.5 Patch available GHSA-x8qp-wqqm-57ph
- @intlify/vue-i18n-core (npm) Vendor— Affected 10.0.0 to before 10.0.8 Fixed in 10.0.8 Patch available GHSA-x8qp-wqqm-57ph
- @intlify/vue-i18n-core (npm) Vendor— Affected 11.0.0 to before 11.1.10 Fixed in 11.1.10 Patch available GHSA-x8qp-wqqm-57ph
- petite-vue-i18n (npm) Vendor— Affected 10.0.0 to before 10.0.8 Fixed in 10.0.8 Patch available GHSA-x8qp-wqqm-57ph
- petite-vue-i18n (npm) Vendor— Affected 11.0.0 to before 11.1.10 Fixed in 11.1.10 Patch available GHSA-x8qp-wqqm-57ph
Remediation
- Fix · CNA vue-i18n (intlify) Fixed in 9.14.5, 10.0.8, 11.1.0
- Fix · GHSA-x8qp-wqqm-57ph vue-i18n (npm) Fixed in 9.14.5 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph vue-i18n (npm) Fixed in 10.0.8 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph vue-i18n (npm) Fixed in 11.1.10 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph @intlify/core (npm) Fixed in 9.14.5 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph @intlify/core (npm) Fixed in 10.0.8 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph @intlify/core (npm) Fixed in 11.1.10 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph @intlify/core-base (npm) Fixed in 9.14.5 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph @intlify/core-base (npm) Fixed in 10.0.8 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph @intlify/core-base (npm) Fixed in 11.1.10 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph @intlify/vue-i18n-core (npm) Fixed in 9.14.5 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph @intlify/vue-i18n-core (npm) Fixed in 10.0.8 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph @intlify/vue-i18n-core (npm) Fixed in 11.1.10 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph petite-vue-i18n (npm) Fixed in 10.0.8 Advisory →
- Fix · GHSA-x8qp-wqqm-57ph petite-vue-i18n (npm) Fixed in 11.1.10 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2025-53892
- 2026-10-03 Alias added: GHSA-x8qp-wqqm-57ph
References
Other 9
- https://github.com/intlify/vue-i18n/security/advisories/GHSA-x8qp-wqqm-57ph
- https://github.com/intlify/vue-i18n/pull/2229
- https://github.com/intlify/vue-i18n/pull/2230
- https://github.com/intlify/vue-i18n/commit/49f982443ab8fd94ecc427b265ce97d57df94d7e
- https://github.com/intlify/vue-i18n/commit/a47099619fb9b256e86341a8658ebe72e92ab099
- https://github.com/intlify/vue-i18n/releases/tag/v10.0.8
- https://github.com/intlify/vue-i18n/releases/tag/v11.1.10
- https://github.com/intlify/vue-i18n/releases/tag/v9.14.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-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
- TI-2026-82144 Cross-site scripting in Vue I18n translations through iframe srcdoc CVSS 3.1HIGH 7.2
Sources
- CVE-2025-53892 · CVE Program
- CVE-2025-53892 · NVD
- FIRST EPSS
- GHSA-x8qp-wqqm-57ph · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences