Server-Side Request Forgery (SSRF)Weakness · CWE-918

CVE-2020-36851

CRITICAL · 9.5 CVSS v4.0 Published 2025-09-25
Mitigation only
No fix yet — a mitigation exists. There is no fixed release. A documented workaround reduces exposure in the meantime.
See remediation →
100/100
Remediation priority · Urgent
Remotely reachable No privileges Zero-click

Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.

NVD · unedited
Rob--W cors-anywhere instances configured as an open proxy allow unauthenticated external users to induce the server to make HTTP requests to arbitrary targets (SSRF). Because the proxy forwards requests and headers, an attacker can reach internal-only endpoints and link-local metadata services, retrieve instance role credentials or other sensitive metadata, and interact with internal APIs and services that are not intended to be internet-facing. The vulnerability is exploitable by sending crafted requests to the proxy with the target resource encoded in the URL; many cors-anywhere deployments forward arbitrary methods and headers (including PUT), which can permit exploitation of IMDSv2 workflows as well as access to internal management APIs. Successful exploitation can result in theft of cloud credentials, unauthorized access to internal services, remote code execution or privilege escalation (depending on reachable backends), data exfiltration, and full compromise of cloud resources. Mitigation includes: restricting the proxy to trusted origins or authentication, whitelisting allowed target hosts, preventing access to link-local and internal IP ranges, removing support for unsafe HTTP methods/headers, enabling cloud provider mitigations, and deploying network-level protections.

Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.

dbcve analysis · high confidence

Rob--W cors-anywhere proxy instances configured as open proxies allow unauthenticated attackers to induce the server to make HTTP requests to arbitrary targets (SSRF). This enables access to internal services, cloud metadata endpoints (IMDS), and link-local resources. The support for arbitrary HTTP methods including PUT facilitates IMDSv2 credential theft, leading to potential cloud resource compromise.

MitigationImmediately restrict the proxy to trusted origins or require authentication, whitelist allowed target hosts, block access to link-local/internal IP ranges (especially 169.254.169.254 for metadata), and disable unsafe HTTP methods. Enable cloud-provider-level IMDS protections.

Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.

CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.

From the vector
Attack vector
Network
Complexity
Low
Privileges
None
Authentication
X
User interaction
None
Scope
X

CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.

dbcve checks

Work through these to decide whether this CVE applies to you.

  1. Identify if cors-anywhere proxy is running
    Check for processes running cors-anywhere or look for the application in your web server configuration. Common detection methods: search for 'cors-anywhere' in running processes, check for port listeners commonly used by the proxy (port 8080 is common), or look for the characteristic proxy HTML pages served at the root endpoint.
    Affected if The cors-anywhere proxy software is present and running on the system.
  2. Verify if proxy requires authentication
    Attempt to access the proxy without providing any credentials. Check the configuration file (typically server.js or a config file) for the 'requireHeader' or 'proxyAuth' settings. Look for whether the proxy enforces any form of authentication or API key.
    Affected if The proxy accepts requests without any authentication token or API key, meaning it is configured as an open proxy.
  3. Check for origin restrictions
    Review the proxy configuration for 'origin' or 'Access-Control-Allow-Origin' settings. Test by sending requests with arbitrary Origin headers to see if they are accepted. Look for whether 'originBlacklist' or 'originWhitelist' is properly configured with restrictive values.
    Affected if The proxy accepts requests from any Origin header or has no origin validation configured, allowing anyone to relay requests through the server.
  4. Inspect if internal and metadata IP ranges are blocked
    Review configuration for 'blockPrivateIP', 'disableIPv6', or similar settings that restrict target hosts. Attempt to proxy a request to 169.254.169.254 (AWS IMDS) or other link-local addresses to see if the proxy allows it.
    Affected if The proxy can be used to access 169.254.169.254 or other internal/link-local IP addresses (127.0.0.1, 10.0.0.0/8, 192.168.0.0/16, etc.).
  5. Verify allowed HTTP methods
    Check the proxy configuration for any restrictions on allowed HTTP methods. Test by attempting to send PUT, DELETE, or other unsafe methods through the proxy. Look for 'allowedMethods' configuration or middleware that filters methods.
    Affected if The proxy accepts and forwards unsafe HTTP methods like PUT, DELETE, or POST to arbitrary target hosts.

A user is affected if they are running a cors-anywhere proxy instance that is open to unauthenticated use without origin restrictions, without blocking access to internal/cloud metadata IPs, and without restricting unsafe HTTP methods.

Generated from the published advisory. Verify against your own configuration.

Check your environment

Paste your version and any relevant configuration and it will be compared against the affected criteria above. Do not include secrets or credentials.

AI-assisted, checked against the advisory. Informational, not a guarantee.

Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.

dbcve · scoped
Mitigation available No clean upgrade yet — mitigate in the meantime
Mitigation

Immediately restrict the proxy to trusted origins or require authentication, whitelist allowed target hosts, block access to link-local/internal IP ranges (especially 169.254.169.254 for metadata), and disable unsafe HTTP methods. Enable cloud-provider-level IMDS protections.

Recommended fix Moderate confidence
  1. 1. Configure the CORS_PROXY_ORIGIN environment variable to restrict access to trusted origins only (e.g., CORS_ORIGIN='https://trusted-domain.com')
  2. 2. Set CORS_PROXY_WHITELIST to define allowed target hostnames or domains that the proxy can forward requests to
  3. 3. Configure the server to block requests to link-local addresses (169.254.0.0/16), private IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), and metadata endpoints (e.g., 169.254.169.254)
  4. 4. Disable or restrict unsafe HTTP methods such as PUT, DELETE, PATCH unless specifically required, via server configuration
  5. 5. Remove forwarding of sensitive headers (like Authorization, Cookie) to untrusted targets
  6. 6. If deploying in a cloud environment, enable IMDSv2 and disable IMDSv1 to prevent metadata service token theft
  7. 7. Deploy network-level filtering (firewall rules, WAF) to block outbound requests to internal infrastructure
Caveat Configuration-only fix; no software upgrade available - implementing origin restrictions may break existing integrations relying on open access

Generated from the published advisory — verify against the referenced sources before acting.

Have this fixed Scoped from the published advisory
  • Consultation2.0 h
  • Implementation4.0 h
  • Testing2.0 h
  • Review / QA1.0 h
9.0 hours of engineering $1,600
Get help mitigating

An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $2,560.

Scan for this in your stack

Free · runs locally
dbcve dependency scanner

Check whether your project pulls in CVE-2020-36851 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.

References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.

Primary sources

Practitioner notes

Contributed

Peer-ranked notes from engineers who’ve handled CVE-2020-36851 in production — separate from our analysis above.

No notes yet

Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.

What this is

A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.

What belongs here
  • Verified mitigations, workarounds, and config changes
  • Version or environment caveats, and links to real fixes
  • No weaponised exploit code, or anything meant to cause harm
  • No spam, self-promotion, credentials, or personal data