CVE-2026-69151: Angular i18n: Cross-Site Scripting (XSS) via event-handler attributes
A Cross-Site Scripting (XSS) vulnerability has been identified in the Angular compiler's internationalization (i18n) pipeline. Although Angular disallows binding to event-handler attributes such as onclick and onerror through standard attribute validation (validateAttribute() / validateProperty()), the i18n metadata collection path allowed these same attribute names to be marked for translation using i18n-on attributes (e.g., i18n-onerror).
When exploited, a lower-trust translation file could replace a benign static handler such as onerror="void 0" with arbitrary executable JavaScript in the localized build.
The following example illustrates a vulnerable pattern: html <img src="foo.jpg" onerror="void 0" i18n-onerror />
Impact
When exploited, this vulnerability allows arbitrary JavaScript execution within the context of the vulnerable application's domain if an attacker can control or influence the translation files used during localization. This can lead to: - Session Hijacking: Accessing session cookies, tokens, or sensitive user data. - Unauthorized Actions: Performing actions on behalf of the authenticated user.
Patched Versions
- 22.0.1 - 21.2.19 - 20.3.27
Workarounds
Ensure that static event-handler attributes (e.g., onerror, onclick) are never marked for internationalization (i18n-on) in application templates, and ensure translation files are sourced from trusted origins.
Other sources
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.27, 21.2.19, and 22.0.1, the Angular compiler i18n pipeline permits i18n-onerror and other i18n-on event-handler attributes, allowing a lower-trust translation file to replace a static handler with executable JavaScript. This issue is fixed in versions 20.3.27, 21.2.19, and 22.0.1.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
npm/@angular/coreto a version that resolves this vulnerability.Fixed in 20.3.27 - Upgrade
Upgrade
npm/@angular/coreto a version that resolves this vulnerability.Fixed in 21.2.19 - Upgrade
Upgrade
npm/@angular/coreto a version that resolves this vulnerability.Fixed in 22.0.1 - Upgrade
Upgrade
npm/@angular/compilerto a version that resolves this vulnerability.Fixed in 20.3.27 - Upgrade
Upgrade
npm/@angular/compilerto a version that resolves this vulnerability.Fixed in 21.2.19 - Upgrade
Upgrade
npm/@angular/compilerto a version that resolves this vulnerability.Fixed in 22.0.1 - Upgrade
Upgrade
Angular compiler i18n pipelineto a version that resolves this vulnerability.Fixed in 20.3.27 - Upgrade
Upgrade
Angular compiler i18n pipelineto a version that resolves this vulnerability.Fixed in 21.2.19 - Upgrade
Upgrade
Angular compiler i18n pipelineto a version that resolves this vulnerability.Fixed in 22.0.1 - Configuration
In application templates, ensure static event-handler attributes like `onerror`/`onclick` are never marked for internationalization via `i18n-on*` (e.g., `i18n-onerror`).
Angular i18n (application templates) i18n-on* internationalization of event-handler attributes (e.g., i18n-onerror, i18n-onclick) = Do not mark static event-handler attributes (e.g., onerror, onclick) for internationalization using i18n-on* attributes - Compensating control
Ensure translation files are sourced from trusted origins (i.e., do not allow lower-trust translation sources to influence localized builds).