CVE-2020-11978 Apache Airflow Command Injection
Authenticated users can execute arbitrary commands via example DAGs in Apache Airflow unless examples are disabled in the configuration.
- Exploited in the wild
- Since 18 Jan 2022
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2020-11978?
CVE-2020-11978 is a high-severity command injection vulnerability in Apache Airflow, published on 16 Jul 2020. Any signed-in user can exploit it over the network, with no action from the victim.
Official 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.
Weakness: CWE-78
Which versions are affected by CVE-2020-11978?
4 open source packages ship an affected version, including apache-airflow and airflow. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
apache-airflow PyPI | All versions | 1.10.11rc1 |
apache-airflow PyPI | All versions | 1.10.11rc1 |
apache-airflow PyPI | All versions | 1.10.11rc1 |
airflow Bitnami | All versions | 1.10.11 |
Products include Apache Airflow.
How do I fix CVE-2020-11978?
Upgrade apache-airflow to 1.10.11rc1 or later. US federal agencies must fix it by 18 Jul 2022.
Upgrade, and pass arguments to programs as a list instead of through a shell. More about Command injection.
Is CVE-2020-11978 being exploited?
Yes. Attackers have exploited CVE-2020-11978 in the wild since at least 18 Jan 2022.
Public exploit code: 1 Metasploit module, 1 Exploit-DB entry, 1 Nuclei template and 1 proofs of concept on GitHub.
Other vulnerabilities in Apache Airflow
- CVE-2020-13927 Apache Airflow's Experimental API Authentication Bypass
- CVE-2026-33264 Apache Airflow: DAG author RCE on webserver via unrestricted import_string() in BaseSerialization.deserialize()
- CVE-2023-25754 Apache Airflow: Privilege escalation using airflow logs
- CVE-2023-22884 Apache Airflow, Apache Airflow MySQL Provider: Arbitrary file read via MySQL provider in Apache Airflow
- CVE-2022-38649 Apache Airflow Pinot provider allowed Command Injection
Sources
Also known as BIT-airflow-2020-11978, GHSA-rvmq-4x66-q7j3, PYSEC-2020-14.