Missing per-Dag Authorization in Apache Airflow Assets Events API Leaks Hidden Dag Data
AI analysis
Apache Airflow's /assets/events REST API returned asset events for every Dag in a deployment without filtering results to the Dags the caller is authorized to read. Any authenticated user holding asset-read access could trigger the flaw simply by calling the endpoint, enumerating asset events — including source Dag ID, task ID, run ID, and timestamps — for Dags belonging to other teams or tenants. Because the authorization filter was also missing from the count query, the total_entries value and pagination alone disclosed the existence of hidden Dags even without reading individual rows. Deployments that use per-Dag access control to separate teams or tenants are affected, with no special configuration required; the issue is rated medium (CVSS 3.1: 4.3) since it requires an authenticated account and causes information disclosure only. There is no known public proof of concept and no indication of exploitation in the wild.
What to do: Upgrade to Apache Airflow 3.3.2 or later, where the per-Dag authorization filter is applied to both the events query and the count query. Until patched, restrict asset-read permissions to trusted users and audit /assets/events request logs for accounts retrieving event data or total_entries counts referencing Dag IDs outside their assigned roles. Where strict tenant isolation is required, consider network-level segmentation or separate Airflow deployments per tenant as a compensating control.
Affected
| Apache Airflow | all versions prior to 3.3.2 (fixed in 3.3.2) |
Estimated exposure
moderatethousands to low tens of thousands of multi-tenant deployments (estimate) — Apache Airflow is a widely deployed open-source orchestrator (millions of monthly PyPI downloads) but runs mostly on internal infrastructure with only a few thousand internet-exposed web UIs seen in public scans, and only the subset using…
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Description
Apache Airflow's `/assets/events` API returned asset events for every Dag in the deployment, with no filter restricting them to the Dags the caller is authorized to read. Any authenticated user holding asset-read access could therefore enumerate asset events — including the source Dag ID, task ID, run ID and event timestamps — for Dags they have no permission to see. Because the filter was also absent from the count query, `total_entries` and pagination disclosed the existence of hidden Dags even without inspecting individual rows. Deployments are affected whenever per-Dag access control is used to separate teams or tenants; no special configuration is required. Upgrade to apache-airflow 3.3.2 or later.