Skip to content

build(deps): update dependency @angular/core to v19.2.20 [security] - #1339

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-angular-core-vulnerability
Open

build(deps): update dependency @angular/core to v19.2.20 [security]#1339
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-angular-core-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Mar 1, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@angular/core (source) 19.2.1819.2.20 age confidence

Angular i18n vulnerable to Cross-Site Scripting

CVE-2026-27970 / GHSA-prjf-86w9-mfqv

More information

Details

A Cross-site Scripting (XSS) vulnerability has been identified in the Angular internationalization (i18n) pipeline. In ICU messages (International Components for Unicode), HTML from translated content was not properly sanitized and could execute arbitrary JavaScript.

Angular i18n typically involves three steps, extracting all messages from an application in the source language, sending the messages to be translated, and then merging their translations back into the final source code. Translations are frequently handled by contracts with specific partner companies, and involve sending the source messages to a separate contractor before receiving final translations for display to the end user.

If the returned translations have malicious content, it could be rendered into the application and execute arbitrary JavaScript.

Impact

When successfully exploited, this vulnerability allows for execution of attacker controlled JavaScript in the application origin. Depending on the nature of the application being exploited this could lead to:

  • Credential Exfiltration: Stealing sensitive user data stored in page memory, LocalStorage, IndexedDB, or cookies available to JS and sending them to an attacker controlled server.
  • Page Vandalism: Mutating the page to read or act differently than intended by the developer.
Attach Preconditions
  • The attacker must compromise the translation file (xliff, xtb, etc.).
  • Unlike most XSS vulnerabilities, this one is not exploitable by arbitrary users. An attacker must first compromise an application's translation file before they can escalate privileges into the Angular application client.
  • The victim application must use Angular i18n.
  • The victim application must use one or more ICU messages.
  • The victim application must render an ICU message.
  • The victim application must not defend against XSS via a safe Content-Security Policy (CSP) or Trusted Types.
Patches
  • 21.2.0
  • 21.1.6
  • 20.3.17
  • 19.2.19
Workarounds

Until the patch is applied, developers should consider:

  • Reviewing and verifying translated content received from untrusted third parties before incorporating it in an Angular application.
  • Enabling strict CSP controls to block unauthorized JavaScript from executing on the page.
  • Enabling Trusted Types to enforce proper HTML sanitization.
References

Severity

  • CVSS Score: 7.0 / 10 (High)
  • Vector String: CVSS:4.0/AV:L/AC:L/AT:N/PR:H/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Angular vulnerable to XSS in i18n attribute bindings

CVE-2026-32635 / GHSA-g93w-mfhg-p222

More information

Details

A Cross-Site Scripting (XSS) vulnerability has been identified in the Angular runtime and compiler. It occurs when the application uses a security-sensitive attribute (for example href on an anchor tag) together with Angular's ability to internationalize attributes. Enabling internationalization for the sensitive attribute by adding i18n-<attribute> name bypasses Angular's built-in sanitization mechanism, which when combined with a data binding to untrusted user-generated data can allow an attacker to inject a malicious script.

The following example illustrates the issue:

<a href="" i18n-href>Click me</a>

The following attributes have been confirmed to be vulnerable:

  • action
  • background
  • cite
  • codebase
  • data
  • formaction
  • href
  • itemtype
  • longdesc
  • poster
  • src
  • xlink:href
Impact

When exploited, this vulnerability allows an attacker to execute arbitrary code within the context of the vulnerable application's domain. This enables:

  • Session Hijacking: Stealing session cookies and authentication tokens.
  • Data Exfiltration: Capturing and transmitting sensitive user data.
  • Unauthorized Actions: Performing actions on behalf of the user.
Attack Preconditions
  1. The application must use a vulnerable version of Angular.
  2. The application must bind unsanitized user input to one of the attributes mentioned above.
  3. The bound value must be marked for internationalization via the presence of a i18n-<name> attribute on the same element.
Patches
  • 22.0.0-next.3
  • 21.2.4
  • 20.3.18
  • 19.2.20
Workarounds

The primary workaround is to ensure that any data bound to the vulnerable attributes is never sourced from untrusted user input (e.g., database, API response, URL parameters) until the patch is applied, or when it is, it shouldn't be marked for internationalization.

Alternatively, users can explicitly sanitize their attributes by passing them through Angular's DomSanitizer:

import {Component, inject, SecurityContext} from '@&#8203;angular/core';
import {DomSanitizer} from '@&#8203;angular/platform-browser';

@&#8203;Component({
  template: `
    <form action="" i18n-action>
      <button>Submit</button>
    </form>
  `,
})
export class App {
  url: string;

  constructor() {
    const dangerousUrl = 'javascript:alert(1)';
    const sanitizer = inject(DomSanitizer);
    this.url = sanitizer.sanitize(SecurityContext.URL, dangerousUrl) || '';
  }
}
References

Severity

  • CVSS Score: 8.6 / 10 (High)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

angular/angular (@​angular/core)

v19.2.20

Compare Source

compiler
Commit Type Description
5be912eb55 fix disallow translations of iframe src
core
Commit Type Description
b89b0a83a4 fix sanitize translated attribute bindings with interpolations
621c7071ad fix sanitize translated form attributes

v19.2.19

Compare Source

Breaking Changes

core
  • Angular now only applies known attributes from HTML in translated ICU content. Unknown attributes are dropped and not rendered.

    (cherry picked from commit 03da204)

core
Commit Type Description
747548721d fix block creation of sensitive URI attributes from ICU messages

Configuration

📅 Schedule: (in timezone Europe/Madrid)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • Between 09:00 AM and 09:59 PM, Monday through Friday (* 9-21 * * 1-5)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot requested a review from davidlj95 as a code owner March 1, 2026 21:41
@renovate
renovate Bot enabled auto-merge (squash) March 1, 2026 21:41
@renovate renovate Bot changed the title build(deps): update dependency @angular/core to v19.2.19 [security] build(deps): update dependency @angular/core to v19.2.20 [security] Mar 14, 2026
@renovate
renovate Bot force-pushed the renovate/npm-angular-core-vulnerability branch 2 times, most recently from b9df0f4 to f232af5 Compare March 17, 2026 01:54
@renovate renovate Bot changed the title build(deps): update dependency @angular/core to v19.2.20 [security] build(deps): update dependency @angular/core to v19.2.19 [security] Mar 17, 2026
@renovate renovate Bot changed the title build(deps): update dependency @angular/core to v19.2.19 [security] build(deps): update dependency @angular/core to v19.2.20 [security] Mar 17, 2026
@renovate
renovate Bot force-pushed the renovate/npm-angular-core-vulnerability branch from f232af5 to 26a9a9c Compare March 17, 2026 05:18
@renovate renovate Bot changed the title build(deps): update dependency @angular/core to v19.2.20 [security] build(deps): update dependency @angular/core to v19.2.20 [security] - autoclosed Mar 27, 2026
@renovate renovate Bot closed this Mar 27, 2026
auto-merge was automatically disabled March 27, 2026 01:12

Pull request was closed

@renovate
renovate Bot deleted the renovate/npm-angular-core-vulnerability branch March 27, 2026 01:12
@renovate renovate Bot changed the title build(deps): update dependency @angular/core to v19.2.20 [security] - autoclosed build(deps): update dependency @angular/core to v19.2.20 [security] Mar 30, 2026
@renovate renovate Bot reopened this Mar 30, 2026
@renovate
renovate Bot force-pushed the renovate/npm-angular-core-vulnerability branch 2 times, most recently from 26a9a9c to f87a483 Compare March 30, 2026 21:45
@renovate renovate Bot changed the title build(deps): update dependency @angular/core to v19.2.20 [security] build(deps): update dependency @angular/core to v19.2.20 [security] - autoclosed Apr 27, 2026
@renovate renovate Bot closed this Apr 27, 2026
@renovate renovate Bot changed the title build(deps): update dependency @angular/core to v19.2.20 [security] - autoclosed build(deps): update dependency @angular/core to v19.2.20 [security] Apr 27, 2026
@renovate renovate Bot reopened this Apr 27, 2026
@renovate
renovate Bot force-pushed the renovate/npm-angular-core-vulnerability branch 2 times, most recently from f87a483 to 39c252d Compare April 27, 2026 21:40
@renovate
renovate Bot force-pushed the renovate/npm-angular-core-vulnerability branch from 39c252d to 4ee577b Compare May 12, 2026 11:47
@renovate
renovate Bot enabled auto-merge (squash) May 12, 2026 11:47
@renovate
renovate Bot force-pushed the renovate/npm-angular-core-vulnerability branch from 4ee577b to c962545 Compare July 18, 2026 04:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants