CVE-2020-17515 is a medium-severity (CVSS 6.1) Cross-site Scripting (XSS) vulnerability in apache-airflow. EPSS puts its 30-day exploitation probability at 16.2% (97th percentile). A fix is available for apache-airflow — see the affected versions and patch details below.
Apache Airflow cross-site scripting due to incomplete fix for CVE-2020-13944
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
CVE-2020-17515 by exploitation likelihood (EPSS) against impact (CVSS). Outside the shaded patch-first corner.
Where this sits among everything scored
Of 385,738 CVEs with a current EPSS score, this one falls in the 10–50% band (highlighted). Counts from FIRST.org, log-scaled.
Real-World Exposure
apache-airflow🐍apache-airflowReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects PyPI packages — download data is not available via public APIs for these ecosystems.
Description
The "origin" parameter passed to some of the endpoints like '/trigger' was vulnerable to XSS exploit. This issue affects Apache Airflow versions prior to 1.10.13. This is same as CVE-2020-13944 but the implemented fix in Airflow 1.10.13 did not fix the issue completely.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐍PyPI | apache-airflow | all versions | 1.10.15rc1pip install --upgrade 'apache-airflow==1.10.15rc1' |
| 🐍PyPI | apache-airflow | ≥ 2.0.0b1&&< 2.0.2rc1 | 2.0.2rc1pip install --upgrade 'apache-airflow==2.0.2rc1' |
Affected Products
airflowapacheDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for apache-airflow, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update apache-airflow to 1.10.15rc1 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2020-17515 is resolved across your whole dependency graph.
Workarounds
Escape or sanitise the affected output on the server side rather than relying on client-side filtering, and add a Content-Security-Policy that blocks inline script execution so injected markup cannot run even if it reaches the page.
Frequently Asked Questions
Is CVE-2020-17515 in your dependencies?
Find it across PyPI, including transitive dependencies.