{"schemaVersion":3,"id":"CVE-2020-13927","aliases":["GHSA-hhx9-p69v-cx2j","BIT-airflow-2020-13927","PYSEC-2020-18"],"status":"published","duplicateOf":null,"title":"Apache Airflow's Experimental API Authentication Bypass","description":"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","dates":{"published":"2020-11-10T00:00:00.000Z","modified":"2025-10-21T23:35:32.975Z","reserved":null,"kevAdded":["2022-01-18T00:00:00.000Z"],"kevDue":["2022-07-18T00:00:00.000Z"]},"cvss":{"headline":{"score":9.8,"severity":"critical","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":9.8,"severity":"critical","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"OSV · Pypi","score":9.3,"severity":"critical","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:A","exploitability":null,"impact":null,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Pypi","score":9.8,"severity":"critical","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:H","exploitability":10,"impact":9.8,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":9.8,"severity":"critical","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false},{"version":"2.0","versionLabel":"v2.0","source":"NVD","score":7.5,"severity":"high","vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.99778,"percentile":0.99956,"severity":"critical","asOf":"2026-10-19T00:00:00.000Z","change":{"pp":0,"baselineDate":"2026-09-19T00:00:00.000Z","baselineScore":0.99778},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.99778,"percentile":0.99956}],"last30":[{"date":"2026-09-19T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.99778,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.99778,"percentile":0.99956}]},"kev":{"state":"listed","entries":[{"source":"cisa","sourceLabel":"CISA","dateAdded":"2022-01-18T00:00:00.000Z","dueDate":"2022-07-18T00:00:00.000Z","requiredAction":"Apply updates per vendor instructions.","name":"Apache Airflow's Experimental API Authentication Bypass","description":"The previous default setting for Airflow's Experimental API was to allow all API requests without authentication.","notes":[{"type":"url","href":"https://nvd.nist.gov/vuln/detail/CVE-2020-13927","label":"nvd.nist.gov/vuln/detail/CVE-2020-13927"}],"vendor":"Apache","product":"Airflow's Experimental API","ransomware":false,"ransomwareUse":"Unknown","exploitationType":null}],"listedCount":1,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":true,"entry":{"source":"cisa","sourceLabel":"CISA","dateAdded":"2022-01-18T00:00:00.000Z","dueDate":"2022-07-18T00:00:00.000Z","requiredAction":"Apply updates per vendor instructions.","name":"Apache Airflow's Experimental API Authentication Bypass","description":"The previous default setting for Airflow's Experimental API was to allow all API requests without authentication.","notes":[{"type":"url","href":"https://nvd.nist.gov/vuln/detail/CVE-2020-13927","label":"nvd.nist.gov/vuln/detail/CVE-2020-13927"}],"vendor":"Apache","product":"Airflow's Experimental API","ransomware":false,"ransomwareUse":"Unknown","exploitationType":null}},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[{"id":"REF_19E1AC0B8771FA9E","name":"Exploit Reference (packetstormsecurity.com)","source":"reference","url":"http://packetstormsecurity.com/files/162908/Apache-Airflow-1.10.10-Remote-Code-Execution.html","maturity":"unknown","reliabilityScore":0.2,"verified":false,"type":null,"platforms":[],"requiresAuth":null,"exploitdb":null,"metasploit":null},{"id":"REF_F5C3C293899DFBBC","name":"Exploit Reference (packetstormsecurity.com)","source":"reference","url":"http://packetstormsecurity.com/files/174764/Apache-Airflow-1.10.10-Remote-Code-Execution.html","maturity":"unknown","reliabilityScore":0.2,"verified":false,"type":null,"platforms":[],"requiresAuth":null,"exploitdb":null,"metasploit":null},{"id":"49927","name":"Apache Airflow 1.10.10 - 'Example Dag' Remote Code Execution","source":"exploit-database","url":"https://www.exploit-db.com/exploits/49927","maturity":"poc","reliabilityScore":0.5,"verified":false,"type":null,"platforms":["multiple"],"requiresAuth":null,"exploitdb":{"verified":false,"type":"webapps","platform":"multiple","file":"exploits/multiple/webapps/49927.py","codes":["CVE-2020-13927","CVE-2020-11978"]},"metasploit":null},{"id":"MSF_EXPLOIT_LINUX_HTTP_APACHE_AIRFLOW_DAG_RCE","name":"Apache Airflow 1.10.10 - Example DAG Remote Code Execution","source":"metasploit","url":"https://github.com/rapid7/metasploit-framework/blob/master/modules/exploit/linux/http/apache_airflow_dag_rce.rb","maturity":"weaponized","reliabilityScore":1,"verified":true,"type":"remote","platforms":[],"requiresAuth":false,"exploitdb":null,"metasploit":{"fullname":"exploit/linux/http/apache_airflow_dag_rce","rank":"600","rankName":"excellent","postAuth":false,"check":true,"stability":["crash-safe"],"sideEffects":["artifacts-on-disk","ioc-in-logs"],"reliability":["repeatable-session"]}}],"exploitCount":4,"weaknesses":[{"id":"CWE-306","name":"Missing Authentication for Critical Function","description":"The product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources.","type":"weakness","status":"Draft","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/306.html"},{"id":"CWE-1188","name":"Initialization of a Resource with an Insecure Default","description":"The product initializes or sets a resource with a default that is intended to be changed by the product's installer, administrator, or maintainer, but the default is not secure.","type":"weakness","status":"Incomplete","abstraction":"Base","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/1188.html"},{"id":"CWE-1056","name":"Invokable Control Element with Variadic Parameters","description":"A named-callable or method control element has a signature that\n\t\t\t\t\tsupports a variable (variadic) number of parameters or arguments.","type":"weakness","status":"Incomplete","abstraction":"Base","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/1056.html"}],"affected":[{"vendor":"apache","product":"airflow","name":"Airflow","label":"airflow","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 1.10.11","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.10.11","eol":{"isEol":null,"eolDate":null,"matchMethod":"cpe","cycle":null,"product":{"name":"apache-airflow","label":"Apache Airflow","category":"framework"}},"hubHref":"/vendor/apache/airflow"},{"vendor":"PyPI","product":"apache-airflow","name":"apache-airflow","label":"apache-airflow","ecosystem":"PyPI","cpePart":null,"purl":"pkg:pypi/apache-airflow","purlType":"pypi","versions":[{"text":"< 1.10.11","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.10.11","eol":null,"hubHref":null}],"affectedCount":2,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://lists.apache.org/thread.html/r23a81b247aa346ff193670be565b2b8ea4b17ddbc7a35fc099c1aadd%40%3Cdev.airflow.apache.org%3E","label":"lists.apache.org/thread.html/…","hostname":"lists.apache.org","tags":["WEB","Mailing List","Vendor Advisory"]},{"url":"http://packetstormsecurity.com/files/162908/Apache-Airflow-1.10.10-Remote-Code-Execution.html","label":"packetstormsecurity.com/files/162908/Apache-Airflow-1.10.10-Remote-Code-Execution.html","hostname":"packetstormsecurity.com","tags":["WEB","Exploit","Third Party Advisory","VDB Entry"]},{"url":"http://packetstormsecurity.com/files/174764/Apache-Airflow-1.10.10-Remote-Code-Execution.html","label":"packetstormsecurity.com/files/174764/Apache-Airflow-1.10.10-Remote-Code-Execution.html","hostname":"packetstormsecurity.com","tags":["WEB","Exploit","Third Party Advisory","VDB Entry"]},{"url":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2020-13927","label":"www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2020-13927","hostname":"www.cisa.gov","tags":["Government Resource","WEB","Third Party Advisory","US Government Resource"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-13927","label":"nvd.nist.gov/vuln/detail/CVE-2020-13927","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/apache/airflow/pull/9611","label":"github.com/apache/airflow/pull/9611","hostname":"github.com","tags":["WEB"]},{"url":"https://github.com/apache/airflow/commit/180bca4f993b7b778a8d2c65d3d357652218922b","label":"github.com/apache/airflow/commit/180bca4f993b7b778a8d2c65d3d357652218922b","hostname":"github.com","tags":["WEB"]},{"url":"https://github.com/apache/airflow/commit/9e305d6b810a2a21e2591a80a80ec41acb3afed0","label":"github.com/apache/airflow/commit/9e305d6b810a2a21e2591a80a80ec41acb3afed0","hostname":"github.com","tags":["WEB"]},{"url":"https://airflow.apache.org/docs/apache-airflow/1.10.11/security.html#api-authentication","label":"airflow.apache.org/docs/apache-airflow/1.10.11/security.html","hostname":"airflow.apache.org","tags":["WEB"]},{"url":"https://github.com/advisories/GHSA-hhx9-p69v-cx2j","label":"github.com/advisories/GHSA-hhx9-p69v-cx2j","hostname":"github.com","tags":["Advisory"]},{"url":"https://github.com/apache/airflow","label":"github.com/apache/airflow","hostname":"github.com","tags":["PACKAGE"]},{"url":"https://github.com/apache/airflow/releases/tag/1.10.11","label":"github.com/apache/airflow/releases/tag/1.10.11","hostname":"github.com","tags":["WEB"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/apache-airflow/PYSEC-2020-18.yaml","label":"github.com/pypa/advisory-database/tree/main/vulns/apache-airflow/PYSEC-2020-18.yaml","hostname":"github.com","tags":["WEB"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2020-11-10T00:00:00.000Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"kev-added","date":"2022-01-18T00:00:00.000Z","label":"Added to CISA KEV","detail":"Apache Airflow's Experimental API Authentication Bypass","source":"cisa"},{"kind":"kev-due","date":"2022-07-18T00:00:00.000Z","label":"CISA remediation due","detail":"Apply updates per vendor instructions.","source":"cisa"},{"kind":"modified","date":"2025-10-21T23:35:32.975Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":85,"level":"critical","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-20T06:25:24.635Z","stale":false,"partial":false}}