Repository navigation
[deps]: Update @angular/common to v21.2.20 [SECURITY] - #233
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
Contributor
Author
|
renovate
Bot
force-pushed
the
renovate/npm-angular-common-vulnerability
branch
from
August 11, 2026 19:56
d2840ef to
b1c91a4
Compare
renovate
Bot
force-pushed
the
renovate/npm-angular-common-vulnerability
branch
from
September 11, 2026 18:03
b1c91a4 to
7cd497b
Compare
renovate
Bot
force-pushed
the
renovate/npm-angular-common-vulnerability
branch
from
October 1, 2026 14:02
7cd497b to
a7eb846
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
21.2.17→21.2.20Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Angular: Cache-Key Ambiguity in HttpTransferCache Leading to Cross-Request Response Reuse and State Poisoning
CVE-2026-68945 / GHSA-jhpw-976m-542j
More information
Details
Angular's
HttpTransferCachecaches HTTP requests made during Server-Side Rendering (SSR) so that they can be reused during client-side hydration.During SSR,
HttpTransferCachepreviously generated identical key material for distinct request parameters when repeated values were present because repeated values were joined with commas:Both requests previously serialized as
role=user,admin, allowing distinctHttpClientrequests to produce the same transfer-cache key material.Impact
In an SSR application, this cache-key ambiguity can make a later security-sensitive
HttpClientrequest receive the response from an earlier semantically different request in the same render. For example, an attacker-influenced scalar-comma request can be cached and then replayed as the response for a trusted repeated-param authorization or data request to the same URL. As a result, Angular's server-rendered output can be based on the wrong backend response because the trusted request is not dispatched. This can lead to:Patched Versions
Workarounds
If you cannot upgrade immediately, configure your
HttpClientrequests to skip transfer caching for sensitive endpoints where repeated parameter keys are used:Alternatively, disable the HTTP transfer cache globally in your application bootstrap config:
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Angular: Information Leak via
HttpTransferCacheBypass When UsingwithRequestsMadeViaParentCVE-2026-88059 / GHSA-p297-fm68-3q8c
More information
Details
A security bypass vulnerability was discovered in
@angular/commonwhen Server-Side Rendering (SSR) and hydration are enabled in applications using a hierarchicalHttpClientconfiguration withwithRequestsMadeViaParent().The
HttpTransferCacheutility optimizes hydration by caching outgoing HTTP requests performed during SSR and transferring the cached state to the client-side application viaTransferState(serialized as JSON in<script id="ng-state">). Following the remediation of CVE-2026-50170,HttpTransferCacheautomatically skips caching requests that contain authentication headers or credentials (Authorization,Cookie,withCredentials, etc.).However, when a child
HttpClientdelegates to a parent client viawithRequestsMadeViaParent(), the child'sTransferCacheinterceptor evaluates whether the request is eligible for caching before delegating to the parent client's interceptor chain.If an outgoing request originates as anonymous from the child client, the child
TransferCachemarks the request as cacheable. When the request reaches a parent interceptor that injects sensitive authentication credentials (such as anAuthorizationheader or API token), the parentTransferCachecorrectly skips caching the authenticated request. However, when the backend returns the private, authenticated response, the childTransferCachestill stores the response inTransferStatebased on its initial pre-delegation evaluation.Impact
Successful exploitation allows sensitive, user-specific information belonging to an authenticated user to be leaked to unauthenticated or unauthorized users. This occurs when:
HttpClientinitiates an unauthenticated request that is subsequently authenticated by a parent interceptor.TransferState).Attack Preconditions & Vulnerable Configurations
An application is affected only if all of the following conditions are met:
provideClientHydration()).HttpClientwith Delegation: The application configures a childHttpClientusingwithRequestsMadeViaParent().Authorizationheaders, session cookies, or custom API tokens filtered viawithHttpTransferCacheOptions) are attached by an interceptor in the parent injector chain rather than on the initial child request.Vulnerable Code Pattern Example
Patches
The issue is resolved by updating
@angular/commonto run root interceptors in the terminal request chain so that delegated clients leave inherited root interceptors to the parent chain, preventing duplicate execution and ensuringHttpTransferCacheevaluates cache eligibility after parent request interceptors run.22.1.121.2.2020.3.28Workarounds & Mitigations
For applications that cannot immediately upgrade to a patched version, use one of the following mitigations:
Authorization) are attached directly when constructing the request or via an interceptor configured directly on the childHttpClient, rather than relying solely on parent interceptors.withHttpTransferCacheOptionswith a filter on the child client that explicitly excludes endpoints returning user-specific or sensitive data:Cache-Control: no-store/privateheaders at your edge/CDN layer so personalized HTML is never shared.Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
angular/angular (@angular/common)
v21.2.20Compare Source
core
http
v21.2.19Compare Source
compiler
http
platform-server
v21.2.18Compare Source
compiler-cli
core
http
service-worker
Configuration
📅 Schedule: (UTC)
🚦 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.
This PR was generated by Mend Renovate. View the repository job log.