Security Resilience

CVE-2020-13927

Access Control in Apache Airflow ≤ 1.10.11

CISA KEVActive ExploitationEUVD ExploitedPublic PoCAccess Control
Published
10 November 2020
Modified
23 October 2025
KEV Added
18 January 2022
Patch / advisory
CVSS Score v3.1 9.8
Click a component to see what it means
Raw vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
EPSS Score 0.99 100.0th percentile
Risk Priority 97 floored blend · peak EPSS

CVSS and EPSS are reproduced from their sources (NVD, FIRST EPSS). Risk Priority is our own derived reading, not an NVD score.

Summary

CVE-2020-13927 is a critical-severity Missing Authentication for Critical Function (CWE-306) vulnerability in Apache Airflow. Its CVSS base score is 9.8 (Critical).

Operationally, exploitation aligns with the MITRE ATT&CK technique Junk Data (T1001.001); ranked in the top 0.0% of CVEs by exploit likelihood; CISA has added it to the Known Exploited Vulnerabilities catalog; a public proof-of-concept is referenced.

Deeper analysis AI-assisted summary

Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.

The vulnerability in CVE-2020-13927 is a missing authentication requirement in the default configuration of Apache Airflow's Experimental API. Prior to version 1.10.11, the API accepted all requests without any authentication backend enabled, exposing the component to unauthenticated access by default on new and existing installations.

An attacker with network access to the Airflow instance can send arbitrary requests to the Experimental API endpoints. This can result in full compromise of the Airflow deployment, including the ability to execute code remotely, as demonstrated by multiple public exploit proofs-of-concept targeting version 1.10.10.

The Apache Airflow project addressed the issue by changing the default setting in 1.10.11 to deny_all requests, documented in the security guide and the 1.10.11 UPDATING.md file. Existing deployments must explicitly configure `[api] auth_backend = airflow.api.auth.backend.deny_all` to apply the fix.

Public exploit code for remote code execution against vulnerable versions has been published on Packet Storm, confirming the issue's practical exploitability.

OWASP Top 10 for Web (2025)

EU & UK References

Vulnerability Data

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…

more

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

CWE(s)
KEV Date Added
18 January 2022

Related Threats

MITRE ATT&CK Enterprise Techniques

T1001.001 Junk Data Command And Control
Adversaries may add junk data to protocols used for command and control to make detection more difficult.
T1001.003 Protocol or Service Impersonation Command And Control
Adversaries may impersonate legitimate protocols or web service traffic to disguise command and control activity and thwart analysis efforts.
T1003.001 LSASS Memory Credential Access
Adversaries may attempt to access credential material stored in the process memory of the Local Security Authority Subsystem Service (LSASS).
T1003.002 Security Account Manager Credential Access
Adversaries may attempt to extract credential material from the Security Account Manager (SAM) database either through in-memory techniques or through the Windows Registry where the SAM database is stored.
T1003.003 NTDS Credential Access
Adversaries may attempt to access or create a copy of the Active Directory domain database in order to steal credential information, as well as obtain other information about domain members such as devices, users, and access rights.
T1003.005 Cached Domain Credentials Credential Access
Adversaries may attempt to access cached domain credentials used to allow authentication to occur in the event a domain controller is unavailable.
Derived from this CVE’s CWE(s) via the direct CWE→ATT&CK cross-walk.

CVEs Like This One

CVE-2020-11978Same product: Apache Airflowboth on KEV
CVE-2021-38540Same product: Apache Airflow
CVE-2022-24706Same vendor: Apacheboth on KEV
CVE-2023-27524Same vendor: Apacheboth on KEV
CVE-2026-38743Same product: Apache Airflow
CVE-2026-40690Same product: Apache Airflow
CVE-2026-41084Same product: Apache Airflow
CVE-2023-22887Same product: Apache Airflow
CVE-2026-46764Same product: Apache Airflow
CVE-2026-49296Same product: Apache Airflow

Affected Assets

apache
airflow
≤ 1.10.11

Mitigating Controls

Control response

Prevent
Stop it (NIST 800-53)

—

Detect
Catch it (NIST detect / respond)

—

Harden
Shrink the surface (DISA STIG)
  • 17 hardening rules · 7 OS baselines
Validate
Prove the fix (OWASP ASVS)
  • V14.3.2
  • V6.3.2
  • V11.3.1
  • V13.2.3

Likely Mitigating Controls AI

Per-CVE control mapping for this CVE has not run yet; the list below is derived from the weakness types (CWEs) cited in the NVD entry.

addresses: CWE-306 CWE-1188

Disabling non-essential functions and services eliminates the need to secure them, reducing exposure from missing authentication on unnecessary components.

addresses: CWE-1188 CWE-306

Tailoring replaces or augments insecure default initializations with system-specific values and compensating controls before deployment.

addresses: CWE-306 CWE-1188

Tools routinely check for missing authentication on critical functions and exposed interfaces.

addresses: CWE-306 CWE-1188

Training emphasizes enabling and properly using authentication for critical functions, reducing missing authentication exposures.

addresses: CWE-306 CWE-1188

Secure configuration documentation explicitly addresses enabling authentication for critical functions, reducing missing authentication exposures.

addresses: CWE-306

Requires established identification and authentication to unlock, mitigating missing authentication for continued system access.

addresses: CWE-306

Requiring identification and rationale for actions allowed without authentication ensures critical functions are not left unprotected by forcing review of authentication requirements.

addresses: CWE-306

Authorizing mobile device connections to organizational systems ensures authentication is performed for this critical access function.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

ID.RA-09 partial match
blocks

Pre-acquisition integrity checks can reject products known to ship with insecure defaults.

PR.AA-01 partial match
blocks

Managing identities and credentials is a prerequisite for authentication but does not itself enforce it on critical functions.

PR.AA-03 partial match
blocks

Directly requires authentication of users/services/hardware, which eliminates missing authentication for critical functions.

PR.AA-05 partial match
blocks

Defining and enforcing authorizations assumes prior authentication and therefore only partially mitigates the absence of authentication.

PR.IR-01 partial match
blocks

Protecting networks from unauthorized access can be undermined by missing authentication but does not address the root authentication gap.

PR.PS-01 partial match
blocks

Hardened baselines and configuration management directly replace insecure defaults with secure settings.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

removes
removes
removes
removes

Hardening callouts derived

Configuration rules from DISA STIG baselines that bear on weaknesses of the type cited by this CVE. Each rule is shown with the relationship its mapping actually records, against the CWE it was authored against. Derived via CVE→CWE over `controls_xwalks` (higher-evidence rows only; rows rated `none` are excluded).

Oracle Linux 8 (3 rules)
  • V-248585 OL 8 must require reauthentication when using the "sudo" command. blocks CWE-306
  • V-248823 OL 8 must not have the telnet-server package installed. blocks CWE-1188
  • V-248827 OL 8 must not have the rsh-server package installed. blocks CWE-306
RHEL 7 (3 rules)
  • V-204627 SNMP community strings on the Red Hat Enterprise Linux operating system must be changed from the default. blocks CWE-1188
  • V-204442 The Red Hat Enterprise Linux operating system must not have the rsh-server package installed. blocks CWE-306
  • V-237635 The Red Hat Enterprise Linux operating system must require re-authentication when using the "sudo" command. blocks CWE-306
RHEL 8 (2 rules)
  • V-230492 RHEL 8 must not have the rsh-server package installed. blocks CWE-306
  • V-237643 RHEL 8 must require re-authentication when using the "sudo" command. blocks CWE-306
Ubuntu 22.04 (1 rule)
  • V-260529 Ubuntu 22.04 LTS must be configured so that remote X connections are disabled, unless to fulfill documented and validated mission requirements. blocks CWE-1188
Ubuntu 24.04 (1 rule)
  • V-270708 Ubuntu 24.04 LTS must be configured so that remote X connections are disabled, unless to fulfill documented and validated mission requirements. blocks CWE-1188
Windows Server 2016 (1 rule)
  • V-224972 Active Directory Group Policy objects must have proper access control permissions. blocks CWE-1188
Windows Server 2019 (1 rule)
  • V-205741 Windows Server 2019 Active Directory Group Policy objects must have proper access control permissions. blocks CWE-1188

References