CVE-2020-17518 is a high-severity (CVSS 7.5) CWE-23 vulnerability in org.apache.flink:flink-runtime. 5 public exploit or proof-of-concept references are indexed, so weaponization risk is real. A fix is available for org.apache.flink:flink-runtime — see the affected versions and patch details below.
Upload of file to arbitrary path in Apache Flink
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
org.apache.flink:flink-runtimeReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Maven packages — download data is not available via public APIs for these ecosystems.
Description
Apache Flink 1.5.1 introduced a REST handler that allows you to write an uploaded file to an arbitrary location on the local file system, through a maliciously modified HTTP HEADER. The files can be written to any location accessible by Flink 1.5.1. All users should upgrade to Flink 1.11.3 or 1.12.0 if their Flink instance(s) are exposed. The issue was fixed in commit a5264a6f41524afe8ceadf1d8ddc8c80f323ebc4 from apache/flink:master.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| ☕Maven | org.apache.flink:flink-runtime | ≥ 1.5.1&&< 1.11.3 | 1.11.3org.apache.flink:flink-runtime:1.11.3 |
Affected Products
flinkapacheResearch use only. For defensive security, authorized penetration testing, and academic research only. Never execute exploit code against systems without explicit written authorization.
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for org.apache.flink:flink-runtime, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update org.apache.flink:flink-runtime to 1.11.3 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2020-17518 is resolved across your whole dependency graph.
Workarounds
Resolve every user-supplied path to its canonical form and reject anything that escapes the intended directory, and run the component under an account that has no read or write access outside the directory it legitimately serves.
How to detect CVE-2020-17518
A community-maintained Nuclei template exists for this CVE. You can scan for it directly:
nuclei -id cve-2020-17518 -u https://target- Template
- Apache Flink 1.5.1 - Local File Inclusion
- Severity
- high
- Impact
- An attacker can exploit this vulnerability to access sensitive information, such as configuration files, credentials, or other sensitive data stored on the server.
- Remediation
- Upgrade Apache Flink to a version that is not affected by the vulnerability (1.5.2 or later).
Template by ProjectDiscovery nuclei-templates (pdteam), MIT licensed. View the full template. Scan only systems you are authorised to test.
Fixing This On Your OS
If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.
| Product | Fixed in | Advisory |
|---|---|---|
| Red Hat Fuse 7.9 | flink | RHSA-2021:3140 |
| Red Hat Integration | see advisory | RHSA-2021:3205 |
| Red Hat Integration Camel Quarkus 2 | see advisory | RHSA-2021:3207 |
Frequently Asked Questions
Is CVE-2020-17518 in your dependencies?
Find it across Maven, including transitive dependencies.