Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain own Airflow session cookie
-
DeliveryPlant cookie in victim client via cookie-tossing/XSS on shared domain
-
ExploitVictim calls core API with bearer token plus planted cookie
-
ExecutionAirflow resolves caller from cookie, ignores bearer
-
ImpactAction executes and is audit-logged as attacker's principal
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session fixation prevention
|
| Exploitation Conditions | Requires Apache Airflow 3.3.0 or 3.3.1 specifically - earlier and later releases lack the cookie-caching code path and are not vulnerable. The attacker must first place a valid |
| Impact | No CVSS score or vector was supplied in any input source, so severity signals must be reasoned from the description and patch. There is no EPSS score, no CISA KEV listing, and no public POC - so this is 'no public exploit identified at time of analysis.' The vulnerability is a credential-precedence inversion (CWE-384): on Apache Airflow 3.3.0/3.3.1 core-API routes, JWTRefreshMiddleware caches a user resolved from the |
| Exploit ScenarioDerived | An attacker who holds their own low-privilege Airflow account first injects their |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 21, 2026
Principal confusion in Apache Airflow 3.3.0 and 3.3.1 causes core-API requests that carry both a _token session cookie and an explicit Authorization: Bearer (or OAuth2) credential to execute - and be recorded in the audit log - as the cookie's principal instead of the identity the client explicitly presented, inverting the intended bearer-over-cookie precedence. Exploitation is not automatic: the attacker must first plant a valid _token session cookie of their own into the victim's browser or client (for example by cookie tossing from a sibling subdomain, XSS in a separate application sharing the parent domain, or a shared workstation), and the victim's request must simultaneously carry an explicit credential, so only Airflow UI deployments hosted on a domain shared with other applications are reachable this way. The assessed outcome is misattributed audit records and principal confusion (CVSS:3.1/AV:N/AC:H/PR:L/UI:R/C:N/I:L/A:N) rather than direct privilege escalation, and no public exploit code has been identified at time of analysis.
RemediationAI
Upgrade to Apache Airflow 3.3.2 or later, which resolves the caller from the explicitly supplied credential whenever one is present; the fixes are in the upstream pull requests https://github.com/apache/airflow/pull/72225 and https://github.com/apache/airflow/pull/72723, with the vendor advisory at https://lists.apache.org/thread/3p7zpdvv40tn01m0xk5mt2rxg88mw8w1. Note the intentional behaviour changes shipped with the fix so they are not mistaken for regressions: a request carrying both a _token cookie and an explicit Bearer/OAuth2 credential is now resolved as the credential's principal, and an invalid or expired explicit credential is now rejected with 401/403 even when a valid cookie accompanies it - clients (for example browser-based tooling that sent a service-account token while a user session cookie was present) that relied on the cookie winning must now drop either the header or the cookie to select the intended identity. Where upgrading is not immediately possible, the most effective compensating control is to stop sharing the Airflow UI's parent domain with other applications or to move it to a dedicated domain, which removes the cookie-tossing and co-hosted-XSS delivery vectors entirely at the cost of re-hosting and DNS/certificate changes; additionally, tighten input handling and CSP on any co-hosted application on the same parent domain, and avoid issuing clients that both hold a session cookie and send Authorization: Bearer headers, since that combination is the precondition for the misattribution. Because the failure mode is silent misattribution, review and treat audit-log entries created on 3.3.0/3.3.1 as potentially unreliable for principal attribution until the upgrade is applied. After upgrading, verify that requests with an invalid bearer token return 401/403 rather than succeeding as the cookie's user, and confirm no legitimate integration depends on the old cookie-wins behaviour.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is in Airflow's FastAPI-based core API authentication path and is classified as CWE-384 (Session Fixation): the effective identity of a request is decided by an ambient cookie rather than by the credential the caller explicitly supplies. Concretely, JWTRefreshMiddleware runs before the get_user() dependency, resolves a user from the _token JWT cookie alone, and stamps it onto request.state together with a trust marker (USER_INJECTED_BY_TRUSTED_MIDDLEWARE). Although get_user() was written to code the precedence bearer, then OAuth2, then the session cookie, that block was unreachable whenever a cookie was present, because the cached cookie-derived user was returned first - so on every core-API route the effective order was cookie over bearer. The upstream fix (PR 72225) moves the explicit-credential checks ahead of the cached user and honours request.state.user only when the request carries no explicit credential; an invalid or expired explicit credential now produces a loud 401/403 instead of silently falling back to the cookie. The CPE entry cpe:2.3:a:apache_software_foundation:apache_airflow:*:*:*:*:*:*:*:* identifies the product family but is a wildcard and does not itself encode the narrow 3.3.0-3.3.1 exposure window; the cookie-caching code path exists only in those two releases. The assessed vector AV:N/AC:H/PR:L/UI:R/S:U/C:N/I:L/A:N reflects a network-reachable but high-complexity, attacker-authenticated and user-interaction-dependent issue with low integrity impact and no confidentiality or availability impact.
Know when Apache Airflow 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:H/PR:N/UI:R/S:U/C:L/I:L/A:N
AC:H and PR:L because the attacker needs their own session plus a way to plant a cookie on a shared domain; UI:R as the victim must issue the dual-credential request; only integrity of audit attribution (I:L), no C/A impact.
Primary rating from Vendor (apache).
CVSS VectorVendor: apache
Lifecycle Timeline
1DescriptionCVE.org
When a request to the Airflow core API carries both a session cookie and an explicit Authorization: Bearer token, Airflow resolves the caller from the cookie and ignores the bearer token, inverting the intended precedence of bearer over cookie. The request then executes -- and is recorded in the audit log -- as the cookie's principal rather than the identity the client explicitly presented.
Only Apache Airflow 3.3.0 and 3.3.1 are affected. Earlier releases do not contain the code path that caches the cookie-derived user, and are not vulnerable.
Exploiting this requires an attacker to first place a valid session cookie of their own into the victim's browser or client: for example by cookie tossing from a sibling subdomain, through cross-site scripting in a separate application sharing a parent domain, or via a shared workstation. Deployments that host the Airflow UI on a domain shared with other applications are therefore the most exposed; a deployment on a dedicated domain with no co-hosted applications is not reachable this way. The consequence is principal confusion and misattributed audit records rather than a direct privilege escalation.
Users of 3.3.0 or 3.3.1 should upgrade to Apache Airflow 3.3.2 or later, which resolves the caller from the explicitly supplied credential whenever one is present.
Blast Radius
ecosystem impact- 4 pypi packages depend on apache-airflow (2 direct, 2 indirect)
Ecosystem-wide dependent count for version 3.3.0.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Apache Airflow
View allRemote code execution in Apache Airflow before 3.3.0 lets a DAG author embed a malicious trigger whose attacker-controll
Unsafe deserialization in Apache Airflow 3.3.0's Task SDK allows an authenticated DAG author to cause arbitrary module i
Unsafe deserialization in Apache Airflow 3.0.0 through 3.3.0 allows any DAG author to achieve arbitrary code execution i
Remote code execution in Apache Airflow 3.1.x allows authenticated DAG Authors to execute arbitrary code in the webserve
Command injection in Apache Airflow's BashOperator documentation example allows authenticated attackers to escalate priv
Unsafe XCom templating in Apache Airflow's documented example DAG (`example_xcom.py`) allowed an authenticated UI user w
CVE-2026-30911 is a security vulnerability (CVSS 8.1) that allows any authenticated task instance. High severity vulnera
Authorization bypass in Apache Airflow's Backfill API (all versions prior to 3.3.1) allows any authenticated user holdin
Information disclosure in Apache Airflow 3.0.0 through 3.1.x stems from incomplete secret masking and under-documented w
Apache Airflow 3.0.0 through 3.1.x exposes JWT authentication tokens in application logs, allowing any authenticated UI
CVE-2026-28779 is a security vulnerability (CVSS 7.5) that allows any application co-hosted under the same domain. High
Apache Airflow before 3.2.0 exposes SQL exception stack traces through API responses despite api/expose_stack_traces=fal
EUVD-2026-83943
GHSA-9x6g-jfj6-r3jg
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB