Skip to content

Bump @angular/* framework packages to 20.3.25 (combines split security PRs #5850/#5851/#5852)#5859

Merged
tdonohue merged 1 commit into
DSpace:mainfrom
bram-atmire:fix/angular-20.3.25-security
Jun 24, 2026
Merged

Bump @angular/* framework packages to 20.3.25 (combines split security PRs #5850/#5851/#5852)#5859
tdonohue merged 1 commit into
DSpace:mainfrom
bram-atmire:fix/angular-20.3.25-security

Conversation

@bram-atmire

@bram-atmire bram-atmire commented Jun 20, 2026

Copy link
Copy Markdown
Member

References

Supersedes and resolves the three split Dependabot security PRs:

Description

Dependabot raised the Angular 20.3.24 -> 20.3.25 security update as three separate per-package PRs (security updates do not honor the @angular* grouping configured in .github/dependabot.yml, which only applies to version updates). Each one fails CI at npm clean-install with ERESOLVE, because Angular peer dependencies require every @angular/* framework package to be the exact same version, and bumping one in isolation leaves the rest at 20.3.24.

This PR bumps the whole peer-locked framework family together so the update can actually install and pass CI:

@angular/animations, @angular/common, @angular/compiler, @angular/core, @angular/forms, @angular/localize, @angular/platform-browser, @angular/platform-browser-dynamic, @angular/platform-server, @angular/router, and @angular/compiler-cli -> ^20.3.25.

@angular/compiler-cli is included because it has an exact peer dependency on @angular/compiler, so it must move in lockstep (leaving it behind reproduces the same ERESOLVE). Independently versioned packages (@angular/cdk, @angular/cli, @angular/ssr) are left untouched.

Security advisories resolved (all fixed in 20.3.25)

Advisory Package Severity
GHSA-rgjc-h3x7-9mwg @angular/core (hydration DOM clobbering & response-cache poisoning) High
GHSA-39pv-4j6c-2g6v @angular/common (weak 32-bit cache key in HttpTransferCache, cross-request data leakage) High
GHSA-48r7-hpm6-gfxm @angular/common (DoS via OOM in formatDate) High
GHSA-58w9-8g37-x9v5 @angular/compiler (two-way binding sanitization bypass / XSS) Medium

Instructions for Reviewers

package.json changes are limited to the eleven Angular packages above. The package-lock.json diff is those version bumps plus a few in-range transitive patch refreshes in the mirador/react subtree (react-rnd, notistack, goober, clsx) that npm reconciles automatically; there are no major or out-of-range changes. Verified locally with npm ci (exit 0), which is the exact command CI runs.

Checklist

  • My PR is small in size, or I have provided reasons as to why that's not possible (lock file changes are auto-generated).
  • My PR passes ESLint validation.
  • My PR doesn't introduce new dependencies (version bump of existing ones only).
  • My PR is created against the main branch.

Combined Angular framework bump from 20.3.24 to 20.3.25, addressing the
security advisories that Dependabot raised as three separate, individually
unmergeable PRs (DSpace#5850 @angular/core, DSpace#5851 @angular/compiler,
DSpace#5852 @angular/common).

Angular peer dependencies require every @angular/* framework package to be
the exact same version, so bumping one package at a time fails npm install
with ERESOLVE. This bumps the whole peer-locked family together:
animations, common, compiler, core, forms, localize, platform-browser,
platform-browser-dynamic, platform-server, router, and compiler-cli
(compiler-cli has an exact peer on compiler, so it must move in lockstep).

The package-lock.json also picks up a few in-range transitive patch
refreshes in the mirador/react subtree (react-rnd, notistack, goober,
clsx) as a byproduct of npm reconciling the lock. Verified with npm ci.

Advisories resolved (fixed in 20.3.25):
- GHSA-rgjc-h3x7-9mwg (High)  @angular/core: hydration DOM clobbering and
  response-cache poisoning
- GHSA-39pv-4j6c-2g6v (High)  @angular/common: weak 32-bit cache key in
  HttpTransferCache, cross-request data leakage
- GHSA-48r7-hpm6-gfxm (High)  @angular/common: DoS via OOM in formatDate
- GHSA-58w9-8g37-x9v5 (Med)   @angular/compiler: two-way binding
  sanitization bypass (XSS)
@bram-atmire bram-atmire force-pushed the fix/angular-20.3.25-security branch from 4e052e3 to 5aeda68 Compare June 20, 2026 13:57
@lgeggleston lgeggleston added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Jun 23, 2026
@tdonohue tdonohue added port to dspace-9_x This PR needs to be ported to `dspace-9_x` branch for next bug-fix release port to dspace-10_x This PR needs to be ported to `dspace-10_x` branch for next bug-fix release labels Jun 24, 2026
@tdonohue tdonohue added this to the 11.0 milestone Jun 24, 2026
@tdonohue tdonohue self-requested a review June 24, 2026 18:07
@tdonohue tdonohue moved this to 👀 Under Review in DSpace 11.0 Release Jun 24, 2026

@tdonohue tdonohue left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

👍 Thanks @bram-atmire ! Deployed this locally and verified it works well.

Will attempt to auto-port this to 10.x and 9.x branches, as both of them still have Angular v20.3.24

@github-project-automation github-project-automation Bot moved this from 👀 Under Review to 👍 Reviewer Approved in DSpace 11.0 Release Jun 24, 2026
@tdonohue tdonohue merged commit 3c21741 into DSpace:main Jun 24, 2026
16 checks passed
@github-project-automation github-project-automation Bot moved this from 👍 Reviewer Approved to ✅ Done in DSpace 11.0 Release Jun 24, 2026
@dspace-bot

Copy link
Copy Markdown
Contributor

Backport failed for dspace-9_x, because it was unable to cherry-pick the commit(s).

Please cherry-pick the changes locally and resolve any conflicts.

git fetch origin dspace-9_x
git worktree add -d .worktree/backport-5859-to-dspace-9_x origin/dspace-9_x
cd .worktree/backport-5859-to-dspace-9_x
git switch --create backport-5859-to-dspace-9_x
git cherry-pick -x 5aeda68e5636f77f4f97eb2912359e4947932b53

@dspace-bot

Copy link
Copy Markdown
Contributor

@tdonohue

Copy link
Copy Markdown
Member

@bram-atmire : This was able to be auto-backported to 10.x, but failed to auto-backport to 9.x. If you would have time to backport this manually to dspace-9_x, I think it'd be best to ensure it gets to that branch as well.

@tdonohue tdonohue removed the port to dspace-10_x This PR needs to be ported to `dspace-10_x` branch for next bug-fix release label Jun 24, 2026
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 javascript Pull requests that update javascript code port to dspace-9_x This PR needs to be ported to `dspace-9_x` branch for next bug-fix release

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

4 participants