In the Apache Airflow Keycloak provider, from Airflow 3.3 the Keycloak auth manager takes the user's identity from the signed Airflow session token but reads the Keycloak access and refresh tokens used for every authorization decision from separate, unauthenticated cookies, without ever verifying that the two describe the same subject (CWE-565). An attacker who holds any valid Airflow login of their own and obtains another subject's Keycloak access or refresh token out of band can pair the two, so Airflow authorizes requests with the foreign token's privileges while the session identity, audit log and cache keys continue to name the attacker's own account. The refresh path re-issues an Airflow session token for the attacker's identity carrying the foreign tokens, so the mismatched pairing survives across sessions. Affected deployments are those running Airflow 3.3 or later with the Keycloak auth manager (apache-airflow-providers-keycloak before 0.10.0); earlier versions kept the Keycloak tokens inside the signed session token, preserving the binding. No public proof-of-concept, KEV listing, or reported in-the-wild exploitation is known, and a CVSS score has not yet been assigned.
What to do: Upgrade apache-airflow-providers-keycloak to version 0.10.0 or later, which binds the cookie-supplied Keycloak tokens to the session identity. Until patched, restrict how Keycloak tokens are issued and shared, and review audit logs for accounts performing actions beyond their expected privileges. Confirm whether your deployment runs Airflow 3.3 or later with the Keycloak auth manager, as other auth managers and pre-3.3 versions are not affected.
| Product | Affected |
|---|
| Apache Airflow Keycloak provider (apache-airflow-providers-keycloak), when the Keycloak auth manager is used with Airflo | versions before 0.10.0 |
Estimated exposure
moderate≈10,000–100,000 deployments (subset of Airflow's large installed base on Airflow 3.3+ using the Keycloak auth manager) — Apache Airflow has a very large installed base, but the Keycloak auth manager is a newer, less-common configuration that additionally requires Airflow 3.3+, and Airflow UIs are typically deployed internally rather than internet-exposed, so…
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Description · NVD
Apache Airflow Keycloak provider: from Airflow 3.3 the Keycloak auth manager takes a user's identity from the signed Airflow session token but takes the Keycloak access and refresh tokens used for every authorization decision from separate, unauthenticated cookies, and never checks that the two describe the same subject. A user who holds any valid Airflow login of their own, together with another subject's Keycloak access or refresh token obtained out of band, can pair the two: Airflow then authorizes requests with the foreign token's privileges while the session identity, audit log and cache keys continue to name the attacker's own account. The refresh path re-issues an Airflow session token for the original identity carrying the foreign tokens, so the mismatched pairing survives across sessions. Affects deployments running Airflow 3.3 or later with the Keycloak auth manager. Earlier versions carried the Keycloak tokens inside the signed session token, so the binding existed and was lost when they moved into separate cookies. Users of apache-airflow-providers-keycloak are recommended to upgrade to version 0.10.0 or later, which binds the cookie-supplied tokens to the session identity.