VYPR
Critical severityCISA KEVNVD Advisory· Published Nov 10, 2020· Updated Oct 21, 2025

CVE-2020-13927

CVE-2020-13927

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

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
apache-airflowPyPI
< 1.10.111.10.11

Affected products

1
  • Apache/Airflowdescription

Patches

2
9e305d6b810a

Change default auth for experimental backend to deny_all (#9611)

https://github.com/apache/airflowAsh Berlin-TaylorJul 1, 2020via ghsa
3 files changed · +24 4
  • airflow/config_templates/config.yml+4 2 modified
    @@ -574,11 +574,13 @@
       options:
         - name: auth_backend
           description: |
    -        How to authenticate users of the API
    +        How to authenticate users of the API. See
    +        https://airflow.apache.org/docs/stable/security.html for possible values.
    +        ("airflow.api.auth.backend.default" allows all requests for historic reasons)
           version_added: ~
           type: string
           example: ~
    -      default: "airflow.api.auth.backend.default"
    +      default: "airflow.api.auth.backend.deny_all"
     - name: lineage
       description: ~
       options:
    
  • airflow/config_templates/default_airflow.cfg+4 2 modified
    @@ -311,8 +311,10 @@ endpoint_url = http://localhost:8080
     fail_fast = False
     
     [api]
    -# How to authenticate users of the API
    -auth_backend = airflow.api.auth.backend.default
    +# How to authenticate users of the API. See
    +# https://airflow.apache.org/docs/stable/security.html for possible values.
    +# ("airflow.api.auth.backend.default" allows all requests for historic reasons)
    +auth_backend = airflow.api.auth.backend.deny_all
     
     [lineage]
     # what lineage backend to use
    
  • UPDATING.md+16 0 modified
    @@ -1421,6 +1421,22 @@ Now the `dag_id` will not appear repeated in the payload, and the response forma
     }
     ```
     
    +### Experimental API will deny all request by default.
    +
    +The previous default setting was to allow all API requests without authentication, but this poses security
    +risks to users who miss this fact. This changes the default for new installs to deny all requests by default.
    +
    +**Note**: This will not change the behavior for existing installs, please update check your airflow.cfg
    +
    +If you wish to have the experimental API work, and aware of the risks of enabling this without authentication
    +(or if you have your own authentication layer in front of Airflow) you can get
    +the previous behaviour on a new install by setting this in your airflow.cfg:
    +
    +```
    +[api]
    +auth_backend = airflow.api.auth.backend.default
    +```
    +
     ## Airflow 1.10.10
     
     ### Setting Empty string to a Airflow Variable will return an empty string
    
180bca4f993b

Change default auth for experimental backend to deny_all (#9611)

https://github.com/apache/airflowAsh Berlin-TaylorJul 1, 2020via ghsa
3 files changed · +24 4
  • airflow/config_templates/config.yml+4 2 modified
    @@ -524,11 +524,13 @@
       options:
         - name: auth_backend
           description: |
    -        How to authenticate users of the API
    +        How to authenticate users of the API. See
    +        https://airflow.apache.org/docs/stable/security.html for possible values.
    +        ("airflow.api.auth.backend.default" allows all requests for historic reasons)
           version_added: ~
           type: string
           example: ~
    -      default: "airflow.api.auth.backend.default"
    +      default: "airflow.api.auth.backend.deny_all"
     - name: lineage
       description: ~
       options:
    
  • airflow/config_templates/default_airflow.cfg+4 2 modified
    @@ -274,8 +274,10 @@ endpoint_url = http://localhost:8080
     fail_fast = False
     
     [api]
    -# How to authenticate users of the API
    -auth_backend = airflow.api.auth.backend.default
    +# How to authenticate users of the API. See
    +# https://airflow.apache.org/docs/stable/security.html for possible values.
    +# ("airflow.api.auth.backend.default" allows all requests for historic reasons)
    +auth_backend = airflow.api.auth.backend.deny_all
     
     [lineage]
     # what lineage backend to use
    
  • UPDATING.md+16 0 modified
    @@ -73,6 +73,22 @@ Before 1.10.11 it was possible to edit DagRun State in the `/admin/dagrun/` page
     
     In Airflow 1.10.11+, the user can only choose the states from the list.
     
    +### Experimental API will deny all request by default.
    +
    +The previous default setting was to allow all API requests without authentication, but this poses security
    +risks to users who miss this fact. This changes the default for new installs to deny all requests by default.
    +
    +**Note**: This will not change the behavior for existing installs, please update check your airflow.cfg
    +
    +If you wish to have the experimental API work, and aware of the risks of enabling this without authentication
    +(or if you have your own authentication layer in front of Airflow) you can get
    +the previous behaviour on a new install by setting this in your airflow.cfg:
    +
    +```
    +[api]
    +auth_backend = airflow.api.auth.backend.default
    +```
    +
     ## Airflow 1.10.10
     
     ### Setting Empty string to a Airflow Variable will return an empty string
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

12

News mentions

0

No linked articles in our index yet.