CVE-2026-68968: Apache Airflow Backfill API authorization bypass via type coercion mismatch

CVE-2026-68968 · Severity: high · CVSS 7.5 · Published 2026-08-12

Apache Airflow's Backfill API has an authorization flaw where the system checks permissions using a different data type parser than the actual request handler. An authenticated user with edit permission on any single Directed Acyclic Graph (DAG) can exploit this to read, pause, cancel, or move backfills belonging to other DAGs without proper authorization. The flaw allows attackers to manipulate DAG run states across the entire system.

Technologies: Apache Airflow, apache-airflow (PyPI). Vendors: Apache, PyPI.

Quick answers

Is CVE-2026-68968 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-68968 being exploited in the wild.
How severe is CVE-2026-68968?
High severity, with a CVSS score of 7.5, published 12 August 2026.
Which products and versions are affected?
Apache Airflow before 3.3.1; apache-airflow (PyPI) < 3.3.1, ECOSYSTEM:introduced=0,fixed=3.3.1.
Is there a fix for CVE-2026-68968?
Yes. apache-airflow (PyPI): upgrade to 3.3.1 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-68968 attacked?
It is attacked over the network.
Am I affected by CVE-2026-68968?
Check whether you run Apache Airflow or apache-airflow (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • apache-airflow (PyPI): upgrade to 3.3.1 or later
    pip install "apache-airflow>=3.3.1"

Technical details

The vulnerability stems from a type-parsing mismatch in FastAPI's dependency injection. The authorization dependency uses Python's `int()` to parse the `backfill_id` path parameter, while the route handler uses Pydantic's `NonNegativeInt` (in lax mode). Pydantic's lax parser accepts decimal spellings like "42.0" and coerces them to integers, whereas `int()` raises ValueError for these inputs. Because FastAPI resolves dependencies before endpoint validation, mismatched backfill IDs cause the authorization check to evaluate one DAG while the handler processes a different one. An authenticated user can supply decimal-formatted IDs (e.g., `/backfills/42.0`) to bypass intended access controls. The fix (Apache Airflow 3.3.1+) uses the same `TypeAdapter(NonNegativeInt)` parser in both the dependency and handler, eliminating the divergence.

Affected products

  • Apache Airflow before 3.3.1

Identifiers

  • CVE-2026-68968
  • BIT-AIRFLOW-2026-68968
  • GHSA-j4jc-cq9h-xrhr
  • PYSEC-2026-3710

Timeline

  • 2026-08-12: disclosed: CVE-2026-68968 published
  • 2026-08-04: patched: Fix merged in apache/airflow PR #70889
  • 2026: other: Apache Airflow 3.3.1 released with patch

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.