chore(deps): update dependency @angular/common to v21.2.17 [security]#106
Open
pactflow-renovate-bot[bot] wants to merge 1 commit into
Open
chore(deps): update dependency @angular/common to v21.2.17 [security]#106pactflow-renovate-bot[bot] wants to merge 1 commit into
pactflow-renovate-bot[bot] wants to merge 1 commit into
Conversation
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.15→21.2.17@angular/common: Denial of Service (DoS) via OOM in Date Formatting (formatDate)
CVE-2026-54268 / GHSA-48r7-hpm6-gfxm
More information
Details
A Denial of Service (DoS) vulnerability exists in the
@angular/commonpackage of the Angular framework. TheformatDatefunction, which is also utilized by the standard AngularDatePipe, does not properly limit or validate the length of theformatparameter.When parsing a maliciously crafted, excessively long date format string (e.g., a repeating pattern or very large string), the internal parser splits the string iteratively using a regular expression loop. This results in uncontrolled resource consumption (high CPU utilization and excessive memory allocations), leading to a Denial of Service (DoS).
Impact
1. Server-Side Rendering (SSR)
In Angular applications that leverage Server-Side Rendering, an attacker can supply a malicious payload with an excessively long date format string. Processing this on the server causes high CPU usage and triggers a
JavaScript heap out of memorycrash, rendering the application unavailable to all users.2. Client-Side Rendering (CSR)
In standard client-side applications, executing the vulnerable function with an excessively long format string blocks the browser's main thread, causing the browser tab to freeze and become completely unresponsive.
Patched Versions
Attack Preconditions
For this vulnerability to be exploitable, both of the following conditions must be met:
formatDateutility or theDatePipe.If the date format is hardcoded (e.g.,
'mediumDate','shortTime', or static strings) or properly validated to be within a reasonable length limit, the application is not vulnerable.Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
@angular/common: Weak 32-Bit Cache Key Hashing in
HttpTransferCacheLeading to Cross-Request Data Leakage and State PoisoningCVE-2026-54266 / GHSA-39pv-4j6c-2g6v
More information
Details
Angular's
HttpTransferCachecaches HTTP requests made during Server-Side Rendering (SSR) so that they can be reused during client-side hydration. This avoids repeating the same HTTP requests on the client. The cached responses are stored inTransferStateusing a cache key generated by hashing request properties (method, response type, mapped URL, serialized body, and sorted query parameters).The cache keys are generated using a weak 32-bit DJB2-like polynomial rolling hash. The 32-bit hash space is extremely small, allowing attackers to find hash collisions.
An attacker can easily find a query parameter string (e.g.,
q=aaCAZMMMfor a search request) that produces the exact same 32-bit hash as a sensitive endpoint (e.g.,/api/user/profile). When a victim visits a crafted link containing the colliding parameter, the SSR process executes both the search request and the profile request. Due to the hash collision, the search response overwrites the profile response in theTransferStatecache.Impact
When the application attempts to retrieve the cached response for the sensitive endpoint (such as the user's profile), it receives the attacker-controlled response instead. This results in:
Patched Versions
Framework-Level Fix
The logic has been updated to use a cryptographically secure SHA-256 hash algorithm for generating
TransferStatecache keys inHttpTransferCache. The cache keys are now 256-bit hexadecimal strings.Workarounds
If you cannot upgrade immediately, configure your
HttpClientrequests to skip transfer caching for sensitive endpoints:Alternatively, disable the HTTP transfer cache globally in your application bootstrap config:
Credits
This vulnerability was discovered and reported by CodeMender from Google DeepMind.
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).
Release Notes
angular/angular (@angular/common)
v21.2.17Compare Source
Deprecations
platform-server
@angular/platform-serveris deprecated. Use standardfetchAPIs instead.common
compiler
core
http
platform-server
service-worker
v21.2.16Compare Source
common
compiler
core
platform-server
Configuration
📅 Schedule: (in timezone Australia/Melbourne)
🚦 Automerge: Enabled.
♻ 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 has been generated by Mend Renovate.