Package Instance
Lookup for vulnerable packages by Package URL.
GET /api/packages/993559?format=api
{ "url": "http://public2.vulnerablecode.io/api/packages/993559?format=api", "purl": "pkg:npm/%40angular/platform-server@13.0.0-rc.2", "type": "npm", "namespace": "@angular", "name": "platform-server", "version": "13.0.0-rc.2", "qualifiers": {}, "subpath": "", "is_vulnerable": true, "next_non_vulnerable_version": "19.2.21", "latest_non_vulnerable_version": "22.0.0-next.12", "affected_by_vulnerabilities": [ { "url": "http://public2.vulnerablecode.io/api/vulnerabilities/15266?format=api", "vulnerability_id": "VCID-hhfu-6px3-1ubq", "summary": "Angular: SSRF via protocol-relative and backslash URLs in Angular Platform-Server\n### Impact\n\nA [Server-Side Request Forgery (SSRF)](https://developer.mozilla.org/en-US/docs/Web/Security/Attacks/SSRF) vulnerability exists in `@angular/platform-server` due to improper handling of URLs during Server-Side Rendering (SSR).\n\nWhen an attacker sends a request such as `GET /\\evil.com/ HTTP/1.1` the server engine (Express, etc.) passes the URL string to Angular’s rendering functions.\n\nBecause the URL parser normalizes the backslash to a forward slash for HTTP/HTTPS schemes, the internal state of the application is hijacked to believe the current origin is `evil.com`. This misinterpretation tricks the application into treating the attacker’s domain as the local origin. Consequently, any relative `HttpClient` requests or `PlatformLocation.hostname` references are redirected to the attacker controlled server, potentially exposing internal APIs or metadata services.\n\n**Affected APIs:**\n- `renderModule`\n- `renderApplication`\n- `CommonEngine` (from `@angular/ssr`)\n\n**Non-Affected APIs:**\n- `AngularAppEngine` (from `@angular/ssr`)\n- `AngularNodeAppEngine` (from `@angular/ssr`)\n\n### Attack Preconditions\n- The server has outbound network access.\n- The application uses Angular SSR via the affected APIs.\n- A pathname is passed as URL to the rendering method (e.g. using `req.url`).\n- The server-side code performs HTTP requests using `HttpClient` with relative URLs or uses `PlatformLocation.hostname` to build URLs. \n\n\n### Patches\n- 22.0.0-next.8\n- 21.2.9\n- 20.3.19\n- 19.2.21\n\n### Workarounds\nDevelopers should implement a middleware to sanitize the request URL before it reaches Angular. This involves stripping or normalizing leading slashes:\n\n```js\napp.use((req, res, next) => {\n // Sanitize the URL to ensure it starts with a single forward slash\n if (req.url.startsWith('//') || req.url.startsWith('/\\\\') || req.url.startsWith('\\\\')) {\n req.url = '/' + req.url.replace(/^[/\\\\]+/, '');\n }\n next();\n});\n\n```\n### References\n- [Fix](https://github.com/angular/angular/pull/68194)", "references": [ { "reference_url": "https://api.first.org/data/v1/epss?cve=CVE-2026-41423", "reference_id": "", "reference_type": "", "scores": [ { "value": "0.00038", "scoring_system": "epss", "scoring_elements": "0.11764", "published_at": "2026-05-29T12:55:00Z" } ], "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-41423" }, { "reference_url": "https://github.com/angular/angular", "reference_id": "", "reference_type": "", "scores": [ { "value": "8.7", "scoring_system": "cvssv4", "scoring_elements": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:L/SI:L/SA:N" }, { "value": "HIGH", "scoring_system": "generic_textual", "scoring_elements": "" } ], "url": "https://github.com/angular/angular" }, { "reference_url": "https://github.com/angular/angular/commit/ede7c58a2aa13fdccc8f0b67ce93ba1c11749412", "reference_id": "", "reference_type": "", "scores": [ { "value": "8.7", "scoring_system": "cvssv4", "scoring_elements": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:L/SI:L/SA:N" }, { "value": "HIGH", "scoring_system": "generic_textual", "scoring_elements": "" }, { "value": "Track", "scoring_system": "ssvc", "scoring_elements": "SSVCv2/E:N/A:Y/T:P/P:M/B:A/M:M/D:T/2026-05-08T14:21:41Z/" } ], "url": "https://github.com/angular/angular/commit/ede7c58a2aa13fdccc8f0b67ce93ba1c11749412" }, { "reference_url": "https://github.com/angular/angular/pull/68194", "reference_id": "", "reference_type": "", "scores": [ { "value": "8.7", "scoring_system": "cvssv4", "scoring_elements": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:L/SI:L/SA:N" }, { "value": "HIGH", "scoring_system": "generic_textual", "scoring_elements": "" }, { "value": "Track", "scoring_system": "ssvc", "scoring_elements": "SSVCv2/E:N/A:Y/T:P/P:M/B:A/M:M/D:T/2026-05-08T14:21:41Z/" } ], "url": "https://github.com/angular/angular/pull/68194" }, { "reference_url": "https://github.com/angular/angular/security/advisories/GHSA-45q2-gjvg-7973", "reference_id": "", "reference_type": "", "scores": [ { "value": "8.7", "scoring_system": "cvssv4", "scoring_elements": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:L/SI:L/SA:N" }, { "value": "HIGH", "scoring_system": "generic_textual", "scoring_elements": "" }, { "value": "Track", "scoring_system": "ssvc", "scoring_elements": "SSVCv2/E:N/A:Y/T:P/P:M/B:A/M:M/D:T/2026-05-08T14:21:41Z/" } ], "url": "https://github.com/angular/angular/security/advisories/GHSA-45q2-gjvg-7973" }, { "reference_url": "https://nvd.nist.gov/vuln/detail/CVE-2026-41423", "reference_id": "", "reference_type": "", "scores": [ { "value": "8.7", "scoring_system": "cvssv4", "scoring_elements": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:L/SI:L/SA:N" }, { "value": "HIGH", "scoring_system": "generic_textual", "scoring_elements": "" } ], "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-41423" }, { "reference_url": "https://github.com/advisories/GHSA-45q2-gjvg-7973", "reference_id": "GHSA-45q2-gjvg-7973", "reference_type": "", "scores": [], "url": "https://github.com/advisories/GHSA-45q2-gjvg-7973" } ], "fixed_packages": [ { "url": "http://public2.vulnerablecode.io/api/packages/44748?format=api", "purl": "pkg:npm/%40angular/platform-server@19.2.21", "is_vulnerable": false, "affected_by_vulnerabilities": [], "resource_url": "http://public2.vulnerablecode.io/packages/pkg:npm/%2540angular/platform-server@19.2.21" }, { "url": "http://public2.vulnerablecode.io/api/packages/44747?format=api", "purl": "pkg:npm/%40angular/platform-server@20.3.19", "is_vulnerable": false, "affected_by_vulnerabilities": [], "resource_url": "http://public2.vulnerablecode.io/packages/pkg:npm/%2540angular/platform-server@20.3.19" }, { "url": "http://public2.vulnerablecode.io/api/packages/44746?format=api", "purl": "pkg:npm/%40angular/platform-server@21.2.9", "is_vulnerable": false, "affected_by_vulnerabilities": [], "resource_url": "http://public2.vulnerablecode.io/packages/pkg:npm/%2540angular/platform-server@21.2.9" }, { "url": "http://public2.vulnerablecode.io/api/packages/44744?format=api", "purl": "pkg:npm/%40angular/platform-server@22.0.0-next.8", "is_vulnerable": false, "affected_by_vulnerabilities": [], "resource_url": "http://public2.vulnerablecode.io/packages/pkg:npm/%2540angular/platform-server@22.0.0-next.8" } ], "aliases": [ "CVE-2026-41423", "GHSA-45q2-gjvg-7973" ], "risk_score": null, "exploitability": null, "weighted_severity": null, "resource_url": "http://public2.vulnerablecode.io/vulnerabilities/VCID-hhfu-6px3-1ubq" } ], "fixing_vulnerabilities": [], "risk_score": null, "resource_url": "http://public2.vulnerablecode.io/packages/pkg:npm/%2540angular/platform-server@13.0.0-rc.2" }