GHSA-xhp3-rrf4-c8rv
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with own valid Airflow login
-
DeliveryObtain another subject's Keycloak token out of band
-
ExploitInject foreign token into unsigned Keycloak cookies
-
ExecutionAirflow authorizes requests with foreign privileges
-
ImpactRefresh re-issues pairing, access persists under attacker's identity
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V3 - Web Frontend Security Cookie integrity validation
|
| Exploitation Conditions | Requires all of: (1) a deployment running Airflow 3.3 or later with the Keycloak auth manager enabled (earlier versions embedded the Keycloak tokens in the signed session token and are not affected); (2) the attacker possessing their own valid Airflow session token; and (3) the attacker obtaining another subject's Keycloak access or refresh token out of band (e.g. cookie theft, MITM/proxy capture, or a shared/leaked token). Limiting factors: the foreign Keycloak token is presented to Keycloak, so a fully forged token is rejected - a genuine token belonging to someone else is what is abused; the attacker's own audit identity is retained, which paradoxically both aids evasion of authorization checks and leaves attacker attribution in logs. The opt-in Keycloak auth manager is not Airflow's default, narrowing the exposed population. |
| Impact | This is a genuine authorization-bypass / privilege-escalation flaw, but the raw CVSS 9.1 (AV:N/AC:L/PR:N/UI:N/C:H/I:H/A:N) overstates real-world risk because it ignores two hard preconditions in the description. Exploitation is NOT unauthenticated in practice: the attacker must already hold their own valid Airflow login AND must separately obtain another subject's Keycloak access or refresh token 'out of band.' That out-of-band token acquisition is a material access-complexity gate, so PR:N/AC:L is questionable - I assess PR:L (attacker's own session required) and AC:H (foreign token must be procured). EPSS is low at 0.21% (11th percentile), there is no CISA KEV listing and no public exploit identified at time of analysis, all consistent with a config-gated, niche-provider issue rather than mass exploitation. Signals are internally consistent (low EPSS, no KEV, no POC, patch available) - this is a real bug worth patching promptly in affected deployments, but it is a 'high CVSS, moderate real-world priority' case, not an internet-wide emergency. Note the vendor 'Information Disclosure' tag understates impact: the fix and description show authorization is made under foreign privileges (I:H), not merely data exposure. |
| Exploit ScenarioDerived | An authenticated Airflow user on a 3.3+ deployment using the Keycloak auth manager logs in normally, then swaps in a higher-privileged colleague's Keycloak access/refresh token (captured via cookie theft, a proxy, shared browser, or another leak) into the separate, unsigned Keycloak cookies. Airflow keeps naming the attacker's own account in the session, audit log, and cache keys while making every authorization decision with the victim's privileges, and the refresh path re-mints the pairing so it persists. No public exploit code is identified at time of analysis; the fix PR includes regression tests but not a weaponized POC. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Sep 17, 2026
Privilege escalation in the Apache Airflow Keycloak auth manager (apache-airflow-providers-keycloak) affecting Airflow 3.3 and later lets an authenticated user who already holds a valid Airflow session pair it with another subject's Keycloak access or refresh token - obtained out of band via cookie theft, proxy capture or a leaked token - so Airflow authorizes their requests with the foreign token's privileges while the audit log, cache keys and session identity continue to name the attacker's own account. The official CVSS of 9.1 overstates practical risk: exploitation requires both a valid Airflow login and a genuine (not forged) Keycloak token belonging to someone else, and the opt-in Keycloak auth manager is not Airflow's default authentication backend, so the independent assessment rates this CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N rather than AV:N/AC:L/PR:N. There is no public exploit code and no confirmed active exploitation (EPSS 0.21%, 11th percentile); upgrading the provider to 0.10.0 or later restores the subject binding between session and Keycloak tokens.
Earlier versions of this analysis (1)
The Apache Airflow Keycloak provider (apache-airflow-providers-keycloak before 0.10.0), when running on Airflow 3.3 or later, performs authorization using Keycloak access and refresh tokens read from separate, unsigned cookies while taking the user's identity from the signed Airflow session token, and never verifies that both describe the same subject. Any user
RemediationAI
Vendor-released patch: upgrade apache-airflow-providers-keycloak to version 0.10.0 or later, which binds the cookie-supplied Keycloak tokens to the signed Airflow session identity; details are in the advisory at https://airflow.apache.org/, the announcement at https://lists.apache.org/thread/5cqh5ojl3718ogb0q1dcd9vdr47z7gp3 and https://seclists.org/oss-sec/2026/q3/790. The upstream change is PR https://github.com/apache/airflow/pull/72207, which compares the Keycloak token's sub claim against the authenticated user id and raises InvalidTokenError on any mismatch or unparsable token; organizations that cannot take 0.10.0 immediately can backport this subject-check to their pinned provider build. If patching is not possible, the strongest compensating control is to disable the Keycloak auth manager and fall back to Airflow's default authentication backend, which removes the affected code path entirely at the cost of losing Keycloak SSO and RBAC integration. Also revoke all outstanding Keycloak access and refresh tokens and rotate realm signing material at the Keycloak side, not merely at Airflow, because the refresh path can mint a fresh Airflow session token carrying the foreign tokens - this invalidates any credentials already captured but forcibly logs out active users. Since the precondition is cookie capture, enforce HTTPS with Secure and HttpOnly cookie flags and shorten token lifetimes to shrink the interception window, and review Airflow audit and cache logs for sessions where the recorded identity does not match the account whose Keycloak tokens were presented, plus anomalous refresh calls from unfamiliar source addresses. Each of these controls is disruptive to live SSO sessions and should be scheduled accordingly.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The Apache Airflow Keycloak provider supplies an auth manager that bridges Airflow authentication with Keycloak-issued OIDC tokens. Starting with Airflow 3.3, the provider's Keycloak JWTMiddleware stopped carrying the Keycloak access and refresh tokens inside the signed Airflow session JWT and instead stored them in separate, unsigned cookies. The Airflow session JWT remains the only artifact that establishes caller identity, while the Keycloak cookies are neither signed by Airflow nor bound to that identity - precisely the weakness class described by CWE-565 (Reliance on Cookies without Validation and Integrity Checking). Because authorization decisions were evaluated against the Keycloak token while session identity, audit trail and cache keys continued to reflect the Airflow session, the two could be assembled into a mismatched principal in which Airflow acts for the foreign subject but logs the attacker. The upstream fix (apache/airflow PR 72207) adds a _token_subject helper that decodes the Keycloak JWT payload without verifying its signature, reads the sub claim and compares it to the user id already established by the signed Airflow session, raising InvalidTokenError when the subjects differ or the token cannot be parsed; the unverified read is safe because the value is only ever compared against an identity the signed JWT already proved, and a forged token would be rejected by Keycloak when presented. The refresh path re-issued an Airflow session token for the original identity while carrying the foreign tokens, which is why the mismatched pairing survived across sessions until this binding check was introduced.
Know when 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:L/PR:N/UI:N/S:U/C:H/I:H/A:N
PR:L because the attacker needs their own valid Airflow login and AC:H because a genuine foreign Keycloak token must be obtained out of band; C:H/I:H as actions run with foreign privileges, A:N.
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
3Description PRE-NVD
Executive ViewAI
A critical privilege-escalation flaw in the Apache Airflow Keycloak authentication provider (apache-airflow-providers-keycloak) on Airflow 3.3 and later could allow someone who already holds a valid Airflow session to act with another user's Keycloak privileges while audit logs, cache keys, and session records still attribute the activity to the attacker's own account, directly undermining access auditing and accountability. Exposure is confined to organizations that have opted into the Keycloak auth manager, which is not Airflow's default backend, and exploitation requires both a legitimate Airflow login and a genuine stolen Keycloak token, so practical risk is materially narrower than the headline CVSS suggests. Leadership should still care because the flaw defeats identity-based audit trails in a platform that often orchestrates sensitive data pipelines, and stolen tokens can be captured through cookie theft, proxy interception, or credential leakage for which many organizations have no detection.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
The previous default setting for Airflow's Experimental API was to allow all API requests without authentication, but th
An issue was found in Apache Airflow versions 1.10.10 and below. Rated high severity (CVSS 8.8), this vulnerability is r
The variable import endpoint was not protected by authentication in Airflow >=2.0.0, <2.1.3. Rated critical severity (CV
An issue was found in Apache Airflow versions 1.10.10 and below. Rated critical severity (CVSS 9.8), this vulnerability
A vulnerability in Example Dags of Apache Airflow allows an attacker with UI access who can trigger DAGs, to execute arb
In Apache Airflow, prior to version 2.2.4, some example DAGs did not properly sanitize user-provided params, making them
Incorrect Session Validation in Apache Airflow Webserver versions prior to 1.10.14 with default config allows a maliciou
Insufficient session expiration in apache-airflow-providers-fab 2.4.2 through 3.9.0 means an attacker who already holds
Authentication bypass in the Apache Airflow Keycloak auth manager provider (apache-airflow-providers-keycloak below 0.10
Privilege Context Switching Error vulnerability in Apache Software Foundation Apache Airflow.6.0. Rated critical severit
Improper Neutralization of Special Elements used in a Command ('Command Injection') vulnerability in Apache Software Fou
Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') vulnerability in Apache Airfl
EUVD-2026-80323
NVD
CVE.org
EPSS
VulDB
Exploit-DB