Skip to content

fix(deps, frontend, v1.3): update dependency @angular/core to v21.2.20 - #8622

Merged
mengw15 merged 1 commit into
apache:release/v1.3from
mengw15:backport/8494-update-dependency-angular-core-to-v21-2-v1.3
Sep 21, 2026
Merged

mengw15 merged 1 commit into
apache:release/v1.3from
mengw15:backport/8494-update-dependency-angular-core-to-v21-2-v1.3

Conversation

@mengw15

@mengw15 mengw15 commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

What changes were proposed in this PR?

Backport of #8494 to release/v1.3: a clean cherry-pick of its squash commit, no adaptations — three files, frontend/package.json, frontend/yarn.lock and frontend/LICENSE-binary.

@angular/core 21.2.19 → 21.2.20 fixes CVE-2026-88057 (GHSA-hh8m-fm6v-7cvg). This branch is still on 21.2.19, so v1.3 would ship with it unpatched. @angular/common and @angular/compiler stay at 21.2.19 here, exactly as on main; their own bumps are #8492 and #8493, still open.

Opened manually by the v1.3 release manager: the automated fast path cherry-picked this cleanly and then pushed it straight to release/v1.3, where the Merge Queue ruleset rejected the push (GH013, run 35293784997). The Actions-app bypass meant to unblock that path (#8379) was never created — asfyaml rejects an Integration bypass actor — and the failing job's notification 403s for want of pull-requests: write, so the loss left neither a backport PR nor a comment on #8494. The release/v1.2 backport did get a PR (#8584, still draft) only because its cherry-pick conflicted and so took the other code path. See #8377.

Source: 8284b42

Any related issues, documentation, discussions?

Backport of #8494.

How was this PR tested?

The change is a dependency bump identical to #8494; the backport tree is verified byte-identical to cherry-picking the squash commit onto release/v1.3, and the resulting frontend/package.json reads "@angular/core": "21.2.20". Release-branch CI runs the frontend matrix on this PR.

Was this PR authored or co-authored using generative AI tooling?

Yes. Generated-by: Claude Code (claude-opus-5)

…che#8494)

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@angular/core](https://redirect.github.com/angular/angular)
([source](https://redirect.github.com/angular/angular/tree/HEAD/packages/core))
| [`21.2.19` →
`21.2.20`](https://renovatebot.com/diffs/npm/@angular%2fcore/21.2.19/21.2.20)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@angular%2fcore/21.2.20?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@angular%2fcore/21.2.19/21.2.20?slim=true)
|

---

### Angular: Sanitization bypass via directive host bindings on concrete
host elements in @&apache#8203;angular/core and @&apache#8203;angular/compiler
[CVE-2026-88057](https://nvd.nist.gov/vuln/detail/CVE-2026-88057) /
[GHSA-hh8m-fm6v-7cvg](https://redirect.github.com/advisories/GHSA-hh8m-fm6v-7cvg)

<details>
<summary>More information</summary>

#### Details
Angular automatically sanitizes untrusted values bound to
security-sensitive DOM sinks (such as `href`, `src`, `action`,
`xlink:href`, and `data`) to protect against Cross-Site Scripting (XSS).

Prior to the fix, the Angular compiler determined the `SecurityContext`
for directive host bindings (`host: {'[attr.href]': 'value'}` or
`@HostBinding('attr.href')`) based solely on the declaring directive or
component selector at compile time, rather than the concrete host
element that the directive was applied to.

When a directive with a security-sensitive host binding was applied to a
different concrete host element—such as through:
- `hostDirectives` composition,
- Class inheritance of host bindings,
- Dynamic component instantiation (`createComponent` with custom
`hostElement` or dynamic directives),
- Elements with SVG/MathML namespaces (e.g. `<svg:a>`, `<math>`), or
- Elements using tag-neutral selectors (e.g. `:not(...)`),

the compiler either failed to associate a sanitizer with the host
binding or attached an incorrect security context. As a result,
untrusted inputs (e.g. `javascript:...` URLs) bound via the host binding
would be written to the DOM attribute without passing through Angular's
built-in sanitizer.

##### Impact
An attacker capable of controlling the value bound to an affected
directive host binding could execute arbitrary JavaScript in the user's
browser context (Cross-Site Scripting).

##### Patches
This issue has been resolved in versions:
- `22.1.0`
- `21.2.20`
- `20.3.28`

##### Workarounds
Ensure that any user-controlled values assigned to properties bound via
directive host bindings are explicitly sanitized using
`DomSanitizer.sanitize(SecurityContext.URL, ...)` before assignment, or
restrict the input to validated safe URL schemes (e.g. `http://`,
`https://`).

#### Severity
- CVSS Score: 5.3 / 10 (Medium)
- Vector String:
`CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N`

#### References
-
[https://github.com/angular/angular/security/advisories/GHSA-hh8m-fm6v-7cvg](https://redirect.github.com/angular/angular/security/advisories/GHSA-hh8m-fm6v-7cvg)
-
[https://github.com/angular/angular/issues/69550](https://redirect.github.com/angular/angular/issues/69550)
-
[https://github.com/angular/angular/pull/69558](https://redirect.github.com/angular/angular/pull/69558)
-
[https://github.com/angular/angular/commit/2f96c8020f85ccb715a76de4b79a0c680c2c7264](https://redirect.github.com/angular/angular/commit/2f96c8020f85ccb715a76de4b79a0c680c2c7264)
-
[https://github.com/angular/angular/commit/6afe6fa781c2f0931f0aedd729b9884a8fe212ee](https://redirect.github.com/angular/angular/commit/6afe6fa781c2f0931f0aedd729b9884a8fe212ee)
-
[https://github.com/angular/angular/commit/6caa298dee58319b2d674dc91364e26ffe3ecb2b](https://redirect.github.com/angular/angular/commit/6caa298dee58319b2d674dc91364e26ffe3ecb2b)
-
[https://github.com/angular/angular/releases/tag/v20.3.28](https://redirect.github.com/angular/angular/releases/tag/v20.3.28)
-
[https://github.com/angular/angular/releases/tag/v21.2.20](https://redirect.github.com/angular/angular/releases/tag/v21.2.20)
-
[https://github.com/angular/angular/releases/tag/v22.1.0](https://redirect.github.com/angular/angular/releases/tag/v22.1.0)
-
[https://github.com/advisories/GHSA-hh8m-fm6v-7cvg](https://redirect.github.com/advisories/GHSA-hh8m-fm6v-7cvg)

This data is provided by the [GitHub Advisory
Database](https://redirect.github.com/advisories/GHSA-hh8m-fm6v-7cvg)
([CC-BY
4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### Angular: Sanitization bypass via directive host bindings on concrete
host elements in @&apache#8203;angular/core and @&apache#8203;angular/compiler
[CVE-2026-88057](https://nvd.nist.gov/vuln/detail/CVE-2026-88057) /
[GHSA-hh8m-fm6v-7cvg](https://redirect.github.com/advisories/GHSA-hh8m-fm6v-7cvg)

<details>
<summary>More information</summary>

#### Details
Angular automatically sanitizes untrusted values bound to
security-sensitive DOM sinks (such as `href`, `src`, `action`,
`xlink:href`, and `data`) to protect against Cross-Site Scripting (XSS).

Prior to the fix, the Angular compiler determined the `SecurityContext`
for directive host bindings (`host: {'[attr.href]': 'value'}` or
`@HostBinding('attr.href')`) based solely on the declaring directive or
component selector at compile time, rather than the concrete host
element that the directive was applied to.

When a directive with a security-sensitive host binding was applied to a
different concrete host element—such as through:
- `hostDirectives` composition,
- Class inheritance of host bindings,
- Dynamic component instantiation (`createComponent` with custom
`hostElement` or dynamic directives),
- Elements with SVG/MathML namespaces (e.g. `<svg:a>`, `<math>`), or
- Elements using tag-neutral selectors (e.g. `:not(...)`),

the compiler either failed to associate a sanitizer with the host
binding or attached an incorrect security context. As a result,
untrusted inputs (e.g. `javascript:...` URLs) bound via the host binding
would be written to the DOM attribute without passing through Angular's
built-in sanitizer.

##### Impact
An attacker capable of controlling the value bound to an affected
directive host binding could execute arbitrary JavaScript in the user's
browser context (Cross-Site Scripting).

##### Patches
This issue has been resolved in versions:
- `22.1.0`
- `21.2.20`
- `20.3.28`

##### Workarounds
Ensure that any user-controlled values assigned to properties bound via
directive host bindings are explicitly sanitized using
`DomSanitizer.sanitize(SecurityContext.URL, ...)` before assignment, or
restrict the input to validated safe URL schemes (e.g. `http://`,
`https://`).

#### Severity
- CVSS Score: 5.3 / 10 (Medium)
- Vector String:
`CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N`

#### References
-
[https://github.com/angular/angular/security/advisories/GHSA-hh8m-fm6v-7cvg](https://redirect.github.com/angular/angular/security/advisories/GHSA-hh8m-fm6v-7cvg)
-
[https://github.com/angular/angular/issues/69550](https://redirect.github.com/angular/angular/issues/69550)
-
[https://github.com/angular/angular/pull/69558](https://redirect.github.com/angular/angular/pull/69558)
-
[https://github.com/angular/angular/commit/2f96c8020f85ccb715a76de4b79a0c680c2c7264](https://redirect.github.com/angular/angular/commit/2f96c8020f85ccb715a76de4b79a0c680c2c7264)
-
[https://github.com/angular/angular/commit/6afe6fa781c2f0931f0aedd729b9884a8fe212ee](https://redirect.github.com/angular/angular/commit/6afe6fa781c2f0931f0aedd729b9884a8fe212ee)
-
[https://github.com/angular/angular/commit/6caa298dee58319b2d674dc91364e26ffe3ecb2b](https://redirect.github.com/angular/angular/commit/6caa298dee58319b2d674dc91364e26ffe3ecb2b)
-
[https://github.com/angular/angular](https://redirect.github.com/angular/angular)
-
[https://github.com/angular/angular/releases/tag/v20.3.28](https://redirect.github.com/angular/angular/releases/tag/v20.3.28)
-
[https://github.com/angular/angular/releases/tag/v21.2.20](https://redirect.github.com/angular/angular/releases/tag/v21.2.20)
-
[https://github.com/angular/angular/releases/tag/v22.1.0](https://redirect.github.com/angular/angular/releases/tag/v22.1.0)

This data is provided by
[OSV](https://osv.dev/vulnerability/GHSA-hh8m-fm6v-7cvg) and the [GitHub
Advisory Database](https://redirect.github.com/github/advisory-database)
([CC-BY
4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### Release Notes

<details>
<summary>angular/angular (@&apache#8203;angular/core)</summary>

###
[`v21.2.20`](https://redirect.github.com/angular/angular/blob/HEAD/CHANGELOG.md#21220-2026-08-12)

[Compare
Source](https://redirect.github.com/angular/angular/compare/v21.2.19...v21.2.20)

##### core

| Commit | Type | Description |
|
------------------------------------------------------------------------------------------------
| ---- | ---------------------------------------- |
|
[6afe6fa781](https://redirect.github.com/angular/angular/commit/6afe6fa781c2f0931f0aedd729b9884a8fe212ee)
| fix | sanitize host bindings on concrete hosts |

##### http

| Commit | Type | Description |
|
------------------------------------------------------------------------------------------------
| ---- | --------------------------------------------------- |
|
[fec5977df4](https://redirect.github.com/angular/angular/commit/fec5977df4dda3a10d5ce2923e3e06d86ba11ee7)
| fix | match header values exactly when deleting |
|
[e33d69a71c](https://redirect.github.com/angular/angular/commit/e33d69a71c5beb8fe5785b53fd6b37658334e8e0)
| fix | preserve immutability of materialized clones |
|
[caf616670f](https://redirect.github.com/angular/angular/commit/caf616670fd20d528aa69e0131cc17d60f0cc27d)
| fix | run root interceptors in the terminal request chain |

<!-- CHANGELOG SPLIT MARKER -->

</details>

---

### Configuration

📅 **Schedule**: (in timezone Etc/UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

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

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/apache/texera).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC43OS4xIiwidXBkYXRlZEluVmVyIjoiNDQuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVsZWFzZS92MS4yIiwic2VjdXJpdHkiXX0=-->

---------

(backported from commit 8284b42)

Co-authored-by: mengw15 <125719918+mengw15@users.noreply.github.com>
Co-authored-by: Xuan Gu <162244362+xuang7@users.noreply.github.com>
@github-actions github-actions Bot added dependencies Pull requests that update a dependency file frontend Changes related to the frontend GUI labels Sep 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Automated Reviewer Suggestions

Based on the git blame history of the changed files, we recommend the following reviewers:

  • Contributors with relevant context: @carloea2
    You can notify them by mentioning @carloea2 in a comment.

@mengw15
mengw15 requested a review from xuang7 September 21, 2026 07:02
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.07%. Comparing base (5036097) to head (45d3d3e).

Additional details and impacted files
@@               Coverage Diff               @@
##             release/v1.3    #8622   +/-   ##
===============================================
  Coverage           94.06%   94.07%           
  Complexity           4808     4808           
===============================================
  Files                1194     1194           
  Lines               48601    48601           
  Branches             5860     5860           
===============================================
+ Hits                45718    45719    +1     
  Misses               1429     1429           
+ Partials             1454     1453    -1     
Flag Coverage Δ *Carryforward flag
access-control-service 81.00% <ø> (ø) Carriedforward from 5036097
agent-service 99.32% <ø> (ø) Carriedforward from 5036097
amber 90.10% <ø> (ø) Carriedforward from 5036097
computing-unit-managing-service 73.67% <ø> (ø) Carriedforward from 5036097
config-service 87.00% <ø> (ø) Carriedforward from 5036097
file-service 87.75% <ø> (ø) Carriedforward from 5036097
frontend 96.82% <ø> (+<0.01%) ⬆️
notebook-migration-service 79.31% <ø> (ø) Carriedforward from 5036097
pyamber 98.18% <ø> (ø) Carriedforward from 5036097
workflow-compiling-service 77.19% <ø> (ø) Carriedforward from 5036097

*This pull request uses carry forward flags. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@xuang7 xuang7 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@mengw15
mengw15 added this pull request to the merge queue Sep 21, 2026
Merged via the queue into apache:release/v1.3 with commit 0f3192e Sep 21, 2026
25 checks passed
@mengw15
mengw15 deleted the backport/8494-update-dependency-angular-core-to-v21-2-v1.3 branch September 21, 2026 20:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file frontend Changes related to the frontend GUI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants