| Package | Affected versions | Patched versions |
|---|---|---|
| angular | = 22.0.0≥ 19.0.0, < 19.2.23≥ 20.0.0, < 20.3.22≥ 21.0.0, < 21.2.15≤ 18.2.14 | 19.2.2320.3.2221.2.15 |
| @angular/service-worker | ≥ 19.0.0-next.0, < 19.2.23≥ 20.0.0-next.0, < 20.3.22≥ 21.0.0-next.0, < 21.2.15≥ 22.0.0-next.0, < 22.0.0-rc.2≤ 18.2.14 | 19.2.2320.3.2221.2.1522.0.0-rc.2 |
An issue in the @angular/service-worker package compromises the integrity of request-policy enforcement during request reconstruction. When the Angular Service Worker intercepts network requests for matched assets, it reconstructs a new Request object using an internal helper function.
During this reconstruction process, the helper function strips the strict, client-defined request redirect policy configuration (such as redirect: 'error'), falling back to the browser's default 'follow' strategy.
If the target web application makes client-side requests with a strict policy (e.g., expecting a network error instead of automatically following redirects), the service worker will bypass this instruction and automatically follow HTTP 3xx redirects to other destinations. This acts as an unintended proxy/intermediary ("Confused Deputy") and can result in cookie/credential exposure or same-origin session-restricted data leakage if public dynamic routes redirect to sensitive routes.
Web applications registering the @angular/service-worker package are vulnerable to this redirect-policy bypass if they make safe client-side fetch calls (such as { redirect: 'error' }) to paths matched by a service worker asset group (such as lazy-loaded JavaScript bundles or dynamic public assets) that can return HTTP redirects to authenticated same-origin secure endpoints.
By stripping developer-defined safety boundaries, the service worker allows the browser to transparently query and return data from credentials-guarded resources that should have been blocked at the network barrier.
To successfully exploit this vulnerability, all of the following application states and parameters must concurrently exist:
@angular/service-worker and has an active registration of ngsw-worker.js inside the client's browser context.assetGroups pattern in ngsw-config.json encompasses the target dynamic routing endpoint./private/account-summary.json).{ redirect: 'error' }.If upgrading the @angular/service-worker package is not immediately feasible, developers should implement the following defensive measures:
SameSite=Strict; Secure; HttpOnly) and consider explicit route isolations (such as subdomains) for credential-guarded private resources.ngsw-config.json settings and ensure that patterns targeting dynamic, secure endpoints are explicitly excluded from automatic asset groups or caching scopes.Running one of these products? Scan your site to see whether it exposes a vulnerable version.
Scan my site free