cbcvebase.
CVE-2020-13927
published 2020-11-10

CVE-2020-13927: 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…

PriorityP197critical9.8CVSS 3.1
AVNACLPRNUINSUCHIHAH
KEVITWEXPLOIT
CISA Known Exploited Vulnerabilitydue 2022-07-18
Exploited in the wild
EPSS
99.67%
99.9th percentile
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

1 ranges
VendorProductVersion rangeFixed in
apacheairflow< 1.10.111.10.11

Detection & IOCsextracted from sources · hover to see the quote

url/api/experimental/test
url/api/experimental/dags/example_trigger_target_dag/tasks/bash_task
url/api/experimental/dags/example_trigger_target_dag/paused/false
url/api/experimental/dags/example_trigger_target_dag/dag_runs
url/api/experimental/latest_runs
snort
alert http any any -> [$HOME_NET,$HTTP_SERVERS] any (msg:"ET HUNTING Possible Apache Airflow Experimental API Authentication Bypass Attempt (CVE-2020-13927)"; flow:established,to_server; http.method; content:"GET"; http.uri; content:"/api/experimental/test"; fast_pattern; reference:cve,2020-13927; classtype:attempted-admin; sid:2035037; rev:2; metadata:created_at 2022_02_01, cve CVE_2020_13927, deployment Perimeter, deployment Internal, confidence High, signature_severity Major, tag CISA_KEV, tag Description_Generated_By_Proofpoint_Nexus, updated_at 2024_11_26, mitre_tactic_id TA0001, mitre_tactic_name Initial_Access, mitre_technique_id T1190, mitre_technique_name Exploit_Public_Facing_Application; target:dest_ip;)
  • Probe for unauthenticated access: HTTP GET to /api/experimental/test returning HTTP 200 without credentials indicates the auth bypass is active.
  • Exploitation chain targets the 'example_trigger_target_dag' DAG and its 'bash_task' task; monitor for unauthenticated GET/POST requests to these API paths.
  • Command injection payload is delivered via the 'message' field in the DAG run conf JSON body as a shell injection string ("; <cmd> #).
  • Nuclei template detection: unauthenticated GET to /api/experimental/latest_runs; response body containing all three strings '"dag_run_url":', '"dag_id":', '"items":' confirms vulnerability.
  • Shodan/FOFA fingerprinting: exposed Airflow instances can be identified by page title 'Airflow - DAGs' or HTML content 'Apache Airflow'.
  • Metasploit module available for this combined CVE-2020-11978 + CVE-2020-13927 unauthenticated RCE chain targeting Apache Airflow 1.10.10.
  • ·Existing Airflow installs (pre-1.10.11) must explicitly set the config value [api]auth_backend = airflow.api.auth.backend.deny_all; upgrading alone does not fix already-deployed instances.
  • ·The vulnerability is also exploitable when example DAGs are loaded (load_examples=True); disabling example DAGs or deleting example_trigger_target_dag mitigates the chained RCE (CVE-2020-11978) component.

CVSS provenance

nvdv3.19.8CRITICALCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
nvdv2.07.5HIGHAV:N/AC:L/Au:N/C:P/I:P/A:P
vulncheck9.8CRITICAL
cisa9.8CRITICAL
CVEs like this are exactly what “Exploited This Week” covers.

Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.