CVE-2020-13927
KEV PoC ×2moderateAuthentication Bypass in Apache Airflow's Experimental API
CISA: Apache Airflow's Experimental API Authentication Bypass
Apache Airflow versions before 1.10.11 shipped with an insecure default for its Experimental API, which accepted all incoming requests with no authentication (CWE-306). An attacker who can reach the API over the network exploits it simply by sending unauthenticated requests — no credentials, special conditions, or user interaction are required. Successful abuse grants full unauthenticated access to the Experimental API's endpoints, and the two public PoCs demonstrate that on Airflow 1.10.10 this unauthenticated access leads to remote code execution. Any Airflow deployment predating 1.10.11 is affected, and even instances upgraded to 1.10.11 or later can remain exposed if they retained the old permissive API configuration, since the new deny-all default only protects fresh installs. The flaw is confirmed exploited in the wild: CISA added it to the Known Exploited Vulnerabilities Catalog on 2022-01-18, and EPSS assigns a 99.8% probability of exploitation within 30 days.
What to do: Upgrade to Apache Airflow 1.10.11 or later and, critically, set [api] auth_backend = airflow.api.auth.backend.deny_all (or another authenticating backend) in airflow.cfg on existing installs, since upgrading alone does not fix retained configurations. Restrict network access to the Airflow webserver/API and verify the Experimental API cannot be reached without credentials. Per CISA's KEV required action, apply updates per vendor instructions.
| apache airflow | Versions prior to 1.10.11 with the Experimental API using the default permissive (no-auth) configuration; installs upgraded to 1.10.11 or later also remain affe |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
The previous default setting for Airflow's Experimental API was to allow all API requests without authentication, but this poses security risks to users who miss this fact. From Airflow 1.10.11 the default has been changed to deny all requests by default and is documented at https://airflow.apache.org/docs/1.10.11/security.html#api-authentication. Note this change fixes it for new installs but existing users need to change their config to default `[api]auth_backend = airflow.api.auth.backend.deny_all` as mentioned in the Updating Guide: https://github.com/apache/airflow/blob/1.10.11/UPDATING.md#experimental-api-will-deny-all-request-by-default
- Affected
- Apache Airflow's Experimental API
- Required action
- Apply updates per vendor instructions.
- Due date
- Ransomware use
- Unknown
- Vendors
- apache
- Products
- airflow
- Weakness
- CWE-306, CWE-1188, CWE-1056
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H