A significant vulnerability has been discovered in Angular’s server-side rendering (SSR) implementation that could allow attackers to access sensitive user data.
The flaw, rooted in how Angular handles concurrent requests, could lead to data from one user’s session being leaked to another.
The Angular team has released patches for all actively supported versions of the framework to address the issue. The vulnerability affects applications using @angular/platform-server, @angular/ssr, and @nguniversal/common.
The core of the problem lies in a race condition within Angular’s dependency injection (DI) container, known as the “platform injector,” during the server-side rendering process.
This injector is responsible for holding request-specific information. However, it was being stored as a global variable scoped to the JavaScript module.
This design choice meant that when multiple requests were processed at the same time, they could inadvertently share or overwrite the global injector’s state, leading to data contamination between different sessions.
In a real-world scenario, this flaw could cause an application to serve a page containing one user’s data in response to a request from a completely different user.
This could expose sensitive information or authentication tokens that are included on the rendered page or within the response headers.
An attacker with network access could exploit this by sending a large volume of requests to the server and inspecting the responses for leaked data from other users’ active sessions.
The vulnerability is particularly concerning because it doesn’t require a privileged position; any traffic that triggers a rendered response could potentially be used to extract information.
Several APIs, including bootstrapApplication, getPlatform, and destroyPlatform, were identified as vulnerable due to their reliance on this shared state.
To resolve this critical issue, the Angular team has released patches for all active release lines, including versions 18, 19, 20, and the v21 prerelease.
The fix introduces a necessary breaking change, particularly for the bootstrapApplication function, which now requires an explicit context to be passed in a server environment to avoid implicit state sharing.
To simplify the update process, Angular has provided an automatic schematic that handles the required code modifications. Developers are urged to update their applications by running the ng update command for their respective version.
For those unable to apply the patches immediately, several workarounds are available, such as disabling SSR, removing any asynchronous behavior from custom bootstrap functions, or ensuring the server build explicitly disables Angular’s “JIT” mode.
Find this Story Interesting! Follow us on Google News, LinkedIn, and X to Get More Instant Updates.
The Wikimedia Foundation has uncovered unauthorized wiki edits, failed hacking attempts, and millions of automated…
Hackers are exploiting internet-connected industrial controllers to disrupt US water utilities and other essential services.…
Dell has released security updates for five vulnerabilities in Dell System Update (DSU), including a…
Travelers connecting to hotel Wi-Fi may now face more than an unreliable internet signal. A…
Meta and Microsoft are reducing employee use of Anthropic’s Claude AI while pushing their own…
ClingSTUN is a Linux backdoor that exploits vulnerable internet-connected devices to give attackers lasting remote…