Apache Airflow
CVE-2026-59245
HIGH
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged Airflow user
-
DeliveryObtain per-DAG grant on DAG named 'DAGs'
-
Exploitresource_name() collides with global all-DAGs resource
-
ExecutionSilently receive global all-DAGs permission
-
ImpactRead and edit every DAG in deployment
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires two concrete, non-default conditions: (1) a DAG must exist whose dag_id is exactly the string 'DAGs' (the same value as the reserved global all-DAGs resource name RESOURCE_DAG), and (2) an administrator must grant a lower-privileged FAB user per-DAG access_control on that specific 'DAGs' DAG. The deployment must be using the Apache Airflow FAB auth manager (apache-airflow-providers-fab) below 3.7.2. Given the CVSS vector's PR:L, the attacker must already hold an authenticated low-privileged Airflow account. Limiting factors: the escalation cannot occur unless someone names a DAG 'DAGs' (unusual) and an admin explicitly grants access to it, so an attacker cannot trigger it unilaterally against a default configuration; there is no user-interaction requirement beyond that, and once the grant exists the escalation is automatic and silent. |
| Impact | The vendor CVSS 3.1 score is 8.1 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N), reflecting network-reachable, low-privilege authenticated abuse with high confidentiality and integrity impact but no availability impact. However, real-world exploitability is meaningfully constrained by two preconditions the attacker does not control: a DAG must exist that is literally named 'DAGs', and an administrator must grant the low-privileged user per-DAG access_control to it. Because these are non-attacker-controlled conditions, I assess attack complexity as higher than the vendor's AC:L (see my assessed vector, AC:H). No EPSS score was provided in the input, and the CVE is not in CISA KEV, so there is no evidence of active exploitation; exploitation status is 'no public exploit identified at time of analysis'. Net: this is a legitimate high-severity privilege-escalation bug worth prioritizing for Airflow operators using the FAB auth manager, but it is a misconfiguration-dependent escalation rather than a mass-exploitable remote flaw - realistic risk is lower than the raw 8.1 suggests. |
| Exploit ScenarioDerived | In an Airflow deployment using the FAB auth manager, an administrator creates or already has a DAG whose dag_id is 'DAGs' and grants a low-privileged analyst per-DAG access to it via access_control. Because the vulnerable resource_name() maps 'DAGs' to the global all-DAGs permission resource, the analyst silently gains read and edit rights over every DAG in the environment, allowing them to view sensitive workflow definitions and modify pipelines they were never meant to touch. No public exploit code is required - the escalation happens automatically once the naming and grant conditions are met. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv3 – Jul 14, 2026
Privilege escalation in the Apache Airflow FAB auth manager (apache-airflow-providers-fab before 3.7.2) lets a low-privileged user who is granted per-DAG access to a DAG literally named 'DAGs' silently receive the global all-DAGs permission, gaining read and edit access to every DAG in the deployment. The flaw stems from a resource-name collision in resource_name(), where the reserved global resource string 'DAGs' is indistinguishable from a legitimate dag_id of the same value. No public exploit identified at time of analysis, and the issue is not listed in CISA KEV.
Earlier versions of this analysis (2)
Privilege escalation in the Apache Airflow FAB auth manager (apache-airflow-providers-fab before 3.7.2) allows a low-privileged user who is granted per-DAG access_control on a DAG named exactly 'DAGs' to silently receive the global all-DAGs permission, gaining read and edit access to every DAG in the deployment. The flaw stems from the resource_name() function returning the raw dag_id when it collides with a reserved resource name, conflating one specific per-DAG grant with the global resource. No public exploit has been identified at time of analysis and it is not listed in CISA KEV, but the fix is confirmed by Apache and shipped in providers-fab 3.7.2.
Privilege escalation in the Apache Airflow FAB auth manager silently grants a lower-privileged user read and edit access to every DAG in the system when two specific conditions coincide. The root cause is a namespace collision in the FAB auth manager's resource_name() function: the global all-DAGs permission resource string is literally 'DAGs', which is also a valid dag_id - so a per-DAG access_control entry for a DAG named 'DAGs' is indistinguishable from the global permission. No public exploit has been identified at time of analysis, and the vulnerability is not listed in CISA KEV; however, successful exploitation bypasses all DAG-level access controls, enabling unauthorized workflow inspection and modification.
RemediationAI
Vendor-released patch: upgrade apache-airflow-providers-fab to 3.7.2 or later, which disambiguates the resource-name collision so a DAG named 'DAGs' resolves to its own 'DAG:DAGs' resource; this is the primary and recommended fix (see PR https://github.com/apache/airflow/pull/69106 and advisory https://lists.apache.org/thread/70f37q3mwov1vm3zolrfxlzds278c78h). If immediate patching is not possible, a targeted compensating control is to rename any DAG whose dag_id is exactly 'DAGs' to any other identifier, which eliminates the collision entirely with minimal side effects beyond updating references to that DAG. As an additional interim measure, audit and revoke per-DAG access_control grants on any DAG named 'DAGs' and review FAB role assignments to confirm no low-privileged user has been inadvertently escalated to the global all-DAGs permission; the trade-off is administrative overhead and potential disruption to legitimate users who need access to that specific DAG.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Apache Airflow's legacy Flask-AppBuilder (FAB) auth manager maps DAG-level authorization onto FAB permission resources. The helper resource_name(dag_id, RESOURCE_DAG) is meant to produce a per-DAG resource such as 'DAG:my_dag', while the singular reserved name 'DAGs' (RESOURCE_DAG) represents the global all-DAGs permission. The vulnerable code short-circuited and returned the raw dag_id whenever it matched an entry in RESOURCE_DETAILS_MAP, so a DAG whose dag_id equals 'DAGs' resolved to the global resource name rather than its own 'DAG:DAGs' resource. This is a classic CWE-269 Improper Privilege Management failure caused by an identifier-namespace collision between attacker-influenceable data (a DAG name) and a trusted, reserved authorization token. The fix (PR #69106) removes the short-circuit so 'DAGs' correctly resolves to 'DAG:DAGs', verified by regression tests asserting resource_name(RESOURCE_DAG, RESOURCE_DAG) == 'DAG:DAGs'. Affected component per CPE is cpe:2.3:a:apache_software_foundation:apache_airflow_fab_provider.
Know when Apache Airflow Fab Provider gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Web/API reachable (AV:N) by an authenticated low-priv user (PR:L), but requires a DAG named 'DAGs' plus an admin-issued grant outside attacker control (AC:H); read/edit of all DAGs gives C:H/I:H, no availability impact (A:N).
Primary rating from Vendor (apache).
CVSS VectorNVD
Lifecycle Timeline
4DescriptionNVD
In the Apache Airflow FAB auth manager, a DAG whose dag_id is DAGs collided with the global all-DAGs permission resource name produced by resource_name(), so a user granted per-DAG access_control on that one DAG was silently granted the global all-DAGs permission (privilege escalation). The escalation triggers when a DAG named DAGs exists and a lower-privileged user is given per-DAG access to it, granting that user read/edit access to every DAG. Users are advised to upgrade to apache-airflow-providers-fab 3.7.2 or later, which disambiguates the resource-name collision.
Executive ViewAI
A privilege escalation vulnerability in Apache Airflow's FAB authentication manager (versions before 3.7.2) allows low-privileged workflow operators to silently escalate permissions to global administrative access, gaining unauthorized read and edit access to every workflow in the deployment. Organizations using this provider face risk of sensitive workflow data exposure, operational sabotage, and potential compliance violations across their entire orchestration infrastructure.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
Affected Products (CPE)NVD
More in Apache Airflow Fab Provider
View allAuthentication bypass in the Apache Airflow FAB provider (apache-airflow-providers-fab 3.7.3 through 3.8.0) lets any una
LDAP filter injection in Apache Airflow FAB Auth Manager (apache-airflow-providers-fab < 3.6.4) enables unauthenticated
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB