CVE-2026-50171
Published:June 15, 2026
Updated:June 16, 2026
A Denial of Service (DoS) vulnerability exists in the "@angular/common" package of Angular. The "formatNumber" function, which is also utilized by "DecimalPipe", "PercentPipe", and "CurrencyPipe", does not properly validate the upper bounds of the "digitsInfo" parameter. Specifically, the minimum and maximum fraction digits parsed from the "digitsInfo" string (e.g., "1.2-4") are converted to integers and used without limits. When parsing a maliciously crafted "digitsInfo" string with excessively large fraction digit values (e.g., "1.200000000-200000000"), the internal "roundNumber" function attempts to pad the digits array to match the requested fraction size. This results in an unbounded loop that repeatedly pushes elements into an array. Impact Successful exploitation of this vulnerability allows an attacker to trigger resource exhaustion, leading to a Denial of Service (DoS): * Server-Side Rendering (SSR): In applications using SSR (e.g., "@angular/ssr"), an attacker can crash the Node.js server process due to a "JavaScript heap out of memory" error. This affects the availability of the application for all users. * Client-Side Rendering (CSR): In standard client-side applications, the unbounded loop will block the main thread, freezing the user's browser tab and making it unresponsive. Attack Preconditions For this vulnerability to be exploitable, the following conditions must be met: 1. Vulnerable Component Usage: The application must use Angular's number formatting utilities, such as the "formatNumber" function directly, or via template pipes ("DecimalPipe", "PercentPipe", "CurrencyPipe"). 2. Attacker-Controlled Parameter: The "digitsInfo" parameter passed to these utilities must be customizable or directly controlled by untrusted user input (e.g., parsed from query parameters, user preference settings, or API responses that accept user-defined formatting options). If "digitsInfo" is trusted or limited to a known, defined range for its value, the vulnerability is not exploitable by external attackers. Patches - 22.0.0-rc.2 - 21.2.15 - 20.3.22 - 19.2.23 Credits This vulnerability was discovered and reported by "CodeMender from Google DeepMind" (https://deepmind.google/blog/introducing-codemender-an-ai-agent-for-code-security/).
Affected Packages
https://github.com/angular/angular.git (GITHUB):
Affected version(s) >=v20.3.16 <v20.3.22Fix Suggestion:
Update to version v20.3.22https://github.com/angular/angular.git (GITHUB):
Affected version(s) >=v19.2.18 <v19.2.23Fix Suggestion:
Update to version v19.2.23https://github.com/angular/angular.git (GITHUB):
Affected version(s) >=v21.0.4 <v21.2.15Fix Suggestion:
Update to version v21.2.15@angular/common (NPM):
Affected version(s) >=20.0.0-next.0 <20.3.22Fix Suggestion:
Update to version 20.3.22@angular/common (NPM):
Affected version(s) >=21.0.0-next.0 <21.2.15Fix Suggestion:
Update to version 21.2.15@angular/common (NPM):
Affected version(s) >=19.0.0-next.0 <19.2.23Fix Suggestion:
Update to version 19.2.23Related Resources (3)
Do you need more information?
Contact UsCVSS v4
Base Score:
8.2
Attack Vector
NETWORK
Attack Complexity
LOW
Attack Requirements
PRESENT
Privileges Required
NONE
User Interaction
NONE
Vulnerable System Confidentiality
NONE
Vulnerable System Integrity
NONE
Vulnerable System Availability
HIGH
Subsequent System Confidentiality
NONE
Subsequent System Integrity
NONE
Subsequent System Availability
NONE
CVSS v3
Base Score:
7.5
Attack Vector
NETWORK
Attack Complexity
LOW
Privileges Required
NONE
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH