{"id":"CVE-2026-88056","revision":"cc11d4f5d58b4f7f89fd3e86d72b8cf1","records":[{"revision":"cc11d4f5d58b4f7f89fd3e86d72b8cf1","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-88056","aliases":[],"title":"Angular: SSRF and Cross-Origin Credential Disclosure via URL Resolution Discrepancy in SSR","description":"Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.30, 21.2.22, and 22.1.4, Angular Server-Side Rendering in @angular/platform-server processes user-controlled resource or request URLs through HttpClient after application code validates them with WHATWG URL parsing. The resolveUrl and parseUrl utilities called String.prototype.trim(), which removed leading Unicode whitespace such as U+00A0 or U+FEFF after the input passed a same-origin check, converting a relative path into a protocol-relative attacker-controlled URL. In affected applications that attach sensitive server-side credentials such as Authorization headers to approved requests, relativeUrlsTransformerInterceptorFn then dispatched the request to the attacker-controlled origin, causing SSRF and credential disclosure. This issue is fixed in versions 20.3.30, 21.2.22, and 22.1.4.","state":0,"publishedAt":"2026-09-10T18:42:34.054+00:00","modifiedAt":"2026-09-15T14:56:52.167+00:00","affected":[{"ecosystem":"Vendor product","name":"angular","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"angular\",\n                    \"product\": \"angular\",\n                    \"versions\": [\n                        {\n                            \"version\": \"<= 19.2.25\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \">= 20.0.0, < 20.3.30\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \">= 21.0.0, < 21.2.22\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \">= 22.0.0, < 22.1.4\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","score":8.6,"severity":"HIGH"}],"references":["https://github.com/angular/angular/security/advisories/GHSA-f6mr-pjwc-34m4","https://github.com/angular/angular/commit/3e924cc8dbbb57f23b262cb8f0d7e2bd0673034c","https://github.com/angular/angular/commit/5aa6d97deb9ef1de14e23748b7fa74f97d183132","https://github.com/angular/angular/commit/71e52d1396b9cef98652929b73e08c4cde645970","https://github.com/angular/angular/releases/tag/v20.3.30","https://github.com/angular/angular/releases/tag/v21.2.22","https://github.com/angular/angular/releases/tag/v22.1.4"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-88056","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-88056","identifiers":["CVE-2026-88056"]},"retained":false,"historicalAffected":[]}],"coverage":[]}