Skip to main content

Apache Airflow CVE-2026-82355

| EUVDEUVD-2026-83943 MEDIUM
Session Fixation (CWE-384)
2026-09-21 apache GHSA-9x6g-jfj6-r3jg
4.2
CVSS 3.1 · Vendor: apache
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain own Airflow session cookie
  2. Delivery
    Plant cookie in victim client via cookie-tossing/XSS on shared domain
  3. Exploit
    Victim calls core API with bearer token plus planted cookie
  4. Execution
    Airflow resolves caller from cookie, ignores bearer
  5. Impact
    Action 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 _token session cookie of their own into the victim's browser or client (via 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 Authorization: Bearer or OAuth2 credential. LIMITING FACTORS: only deployments hosting the Airflow UI on a domain shared with other applications are exposed - an Airflow instance on a dedicated domain with no co-hosted applications is not reachable this way; the attacker must already possess a valid Airflow session (authenticated); and the outcome is misattribution/audit corruption, not access to resources the attacker couldn't otherwise reach.

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 _token session cookie onto request.state, and get_user() returns that cached principal before it ever inspects an explicit Authorization: Bearer or OAuth2 credential, so the cookie silently overrides the bearer token. Critically, the vendor description explicitly states the consequence is 'principal confusion and misattributed audit records rather than a direct privilege escalation' - the request executes as the cookie's identity, not as an elevated identity the attacker didn't already hold. This is a real integrity/attribution defect but a LOW real-world priority: exploitation is heavily gated (attacker must first plant their own valid session cookie in the victim's client, and only deployments sharing a parent domain with other apps are reachable), the affected version window is just two point releases, and there is no confidentiality or availability impact. The 'Privilege Escalation' tag OVERSTATES the actual impact and directly contradicts the vendor's own text; treat this as an auditing/attribution integrity issue, not an escalation primitive.

Exploit ScenarioDerived

An attacker who holds their own low-privilege Airflow account first injects their _token session cookie into a victim's browser or client - e.g. cookie-tossing from a sibling subdomain, exploiting XSS in a different application co-hosted on the shared parent domain, or using a shared workstation. When the victim's client then calls the Airflow core API presenting its own Authorization: Bearer token alongside the planted cookie, Airflow 3.3.0/3.3.1 resolves and audit-logs the action as the attacker's cookie principal instead of the bearer identity the client actually presented. No public exploit code is identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Apache Airflow 3.3.0 <3.3.2

Affected Packages

pypi apache-airflow fix: 3.3.2

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

Vendor (apache) PRIMARY 4.2 LOW
AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N
vuln.today AI 2.6 LOW

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.

3.1 AV:N/AC:H/PR:L/UI:R/S:U/C:N/I:L/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (apache).

CVSS VectorVendor: apache

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

1
CVSS changed
Sep 21, 2026 - 16:22 NVD
4.2 (MEDIUM)

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 4 pypi packages depend on apache-airflow (2 direct, 2 indirect)

Ecosystem-wide dependent count for version 3.3.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
Medium
Popular data-orchestration platform, but only two point releases affected
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

21
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +21
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2026-33264 CRITICAL
9.8 Jul 07

Remote code execution in Apache Airflow before 3.3.0 lets a DAG author embed a malicious trigger whose attacker-controll

CVE-2026-67587 HIGH
8.8 Aug 12

Unsafe deserialization in Apache Airflow 3.3.0's Task SDK allows an authenticated DAG author to cause arbitrary module i

CVE-2026-58076 HIGH
8.8 Aug 12

Unsafe deserialization in Apache Airflow 3.0.0 through 3.3.0 allows any DAG author to achieve arbitrary code execution i

CVE-2026-33858 HIGH
8.8 Apr 13

Remote code execution in Apache Airflow 3.1.x allows authenticated DAG Authors to execute arbitrary code in the webserve

CVE-2026-30898 HIGH
8.8 Apr 18

Command injection in Apache Airflow's BashOperator documentation example allows authenticated attackers to escalate priv

CVE-2025-54550 HIGH
8.1 Apr 15

Unsafe XCom templating in Apache Airflow's documented example DAG (`example_xcom.py`) allowed an authenticated UI user w

CVE-2026-30911 HIGH
8.1 Mar 17

CVE-2026-30911 is a security vulnerability (CVSS 8.1) that allows any authenticated task instance. High severity vulnera

CVE-2026-68968 HIGH
7.5 Aug 12

Authorization bypass in Apache Airflow's Backfill API (all versions prior to 3.3.1) allows any authenticated user holdin

CVE-2025-66236 HIGH
7.5 Apr 13

Information disclosure in Apache Airflow 3.0.0 through 3.1.x stems from incomplete secret masking and under-documented w

CVE-2026-31987 HIGH
7.5 Apr 16

Apache Airflow 3.0.0 through 3.1.x exposes JWT authentication tokens in application logs, allowing any authenticated UI

CVE-2026-28779 HIGH
7.5 Mar 17

CVE-2026-28779 is a security vulnerability (CVSS 7.5) that allows any application co-hosted under the same domain. High

CVE-2026-30912 HIGH
7.5 Apr 18

Apache Airflow before 3.2.0 exposes SQL exception stack traces through API responses despite api/expose_stack_traces=fal

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy