CVE-2020-36851
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 · uneditedRob--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 confidenceRob--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.
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 checksWork through these to decide whether this CVE applies to you.
-
Identify if cors-anywhere proxy is runningCheck 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.
-
Verify if proxy requires authenticationAttempt 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.
-
Check for origin restrictionsReview 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.
-
Inspect if internal and metadata IP ranges are blockedReview 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.).
-
Verify allowed HTTP methodsCheck 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.
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 · scopedImmediately 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.
- 1. Configure the CORS_PROXY_ORIGIN environment variable to restrict access to trusted origins only (e.g., CORS_ORIGIN='https://trusted-domain.com')
- 2. Set CORS_PROXY_WHITELIST to define allowed target hostnames or domains that the proxy can forward requests to
- 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. Disable or restrict unsafe HTTP methods such as PUT, DELETE, PATCH unless specifically required, via server configuration
- 5. Remove forwarding of sensitive headers (like Authorization, Cookie) to untrusted targets
- 6. If deploying in a cloud environment, enable IMDSv2 and disable IMDSv1 to prevent metadata service token theft
- 7. Deploy network-level filtering (firewall rules, WAF) to block outbound requests to internal infrastructure
Generated from the published advisory — verify against the referenced sources before acting.
- Consultation2.0 h
- Implementation4.0 h
- Testing2.0 h
- Review / QA1.0 h
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 locallyCheck 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 sourcesPractitioner notes
ContributedPeer-ranked notes from engineers who’ve handled CVE-2020-36851 in production — separate from our analysis above.
The advisory tells you what broke. It rarely tells you what actually worked. If you’ve dealt with this one, that detail is what the next engineer is searching for.
- The version that genuinely resolved it — not the one the vendor claimed
- A config change or rule that shut the vector down
- A gotcha in the upgrade path that cost you an afternoon
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.
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.
- 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