CVE-2020-11978 is a high-severity (CVSS 8.8) OS Command Injection vulnerability in apache-airflow. It is in CISA's Known Exploited Vulnerabilities catalog (added 2022-01-18) — treat it as actively exploited and patch now. A fix is available for apache-airflow — see the affected versions and patch details below.
Remote code execution (RCE) in Apache Airflow
Exploitation Status
Actively exploited in the wild
- Confirmed by CISA's Known Exploited Vulnerabilities catalog on 2022-01-18. Federal agencies were required to remediate by 2022-07-18.
- A successful exploit gives an attacker total control of the affected component, not partial access.
Exploitation and automatability from CISA (KEV catalog and SSVC triage) for CVE-2020-11978.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
CVE-2020-11978 by exploitation likelihood (EPSS) against impact (CVSS). In the shaded patch-first corner (EPSS 50%+, CVSS 7.0+).
Where this sits among everything scored
Of 395,249 CVEs with a current EPSS score, this one falls in the ≥ 90% band (highlighted). Counts from FIRST.org, log-scaled.
Real-World Exposure
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
An issue was found in Apache Airflow versions 1.10.10 and below. A remote code/command injection vulnerability was discovered in one of the example DAGs shipped with Airflow which would allow any authenticated user to run arbitrary commands as the user running airflow worker/scheduler (depending on the executor in use). If you already have examples disabled by setting load_examples=False in the config then you are not vulnerable.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐍PyPI | apache-airflow | all versions | 1.10.11rc1pip install --upgrade 'apache-airflow==1.10.11rc1' |
Affected Products
airflowapacheResearch use only. For defensive security, authorized penetration testing, and academic research only. Never execute exploit code against systems without explicit written authorization.
Apache Airflow 1.10.10 - 'Example Dag' Remote Code Execution
by Pepe Berba · Jun 2, 2021
Detection & 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.11rc1 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2020-11978 is resolved across your whole dependency graph.
Workarounds
Stop passing untrusted input into the interpreter or shell: call the affected binary with an argument array rather than a composed command string, reject anything outside a strict allowlist of expected values, and run the component under an account that cannot reach beyond the work it legitimately does.
How to detect CVE-2020-11978
A community-maintained Nuclei template exists for this CVE. You can scan for it directly:
nuclei -id cve-2020-11978 -u https://target- Template
- Apache Airflow <=1.10.10 - Remote Code Execution
- Severity
- high
- Impact
- Successful exploitation of this vulnerability could allow an attacker to execute arbitrary code on the affected system.
- Remediation
- If you already have examples disabled by setting load_examples=False in the config then you are not vulnerable.
Template by ProjectDiscovery nuclei-templates (pdteam), MIT licensed. View the full template. Scan only systems you are authorised to test.
Frequently Asked Questions
Is CVE-2020-11978 in your dependencies?
Find it across PyPI, including transitive dependencies.