All vulnerabilities
CVE-2026-68971BIT-airflow-2026-68971GHSA-5247-m8w9-2v4mPYSEC-2026-3994

apache-airflow: Apache Airflow missing team context permits cross-team Dag actions and XCom reads

Apache Software Foundation apache-airflowpipLibraries & packages
CVSS
6.5Medium
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.33%Chance of exploitation activity in the next 30 days, higher than 24% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in3.3.1Fixed versionGitHub
Published12 Aug 2026Updated 2 Oct 2026CVE List

What fixes it

  • 3.3.1apache-airflow, pipGitHub
  • 3.3.1Apache AirflowCVE List
  • 3.3.1apache-airflow, PyPIOSVpip install "apache-airflow>=3.3.1"

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

Apache Airflow's asset materialization endpoint (POST /api/v2/assets/{asset_id}/materialize) and the XCom result check on wait_dag_run_until_finished authorized the target Dag without its team, unlike every other authorization site. A team-aware auth manager distinguishes a team-scoped Dag from a global one by that field -- the Keycloak auth manager, for example, checks the DAG resource instead of DAG:<team> -- so the team-scoped permission that should gate the request was never consulted. In a deployment running multi-team mode with a team-aware auth manager, an authenticated user in one team could trigger Dag runs belonging to another team, supplying their own dag_run_id and conf, and could read another team's XCom values. Deployments using the FAB auth manager are unaffected, as it has no multi-team support. Users are advised to upgrade to apache-airflow 3.3.1 or later, which resolves the Dag's team at both sites.

Text from CVE List

Affected versions 53

  • apache-airflow, pip< 3.3.1GitHub
  • Apache Airflowaffected: all versions before 3.3.1CVE List
  • apache-airflow, PyPIfrom first release, fixed in 3.3.1OSV
  • apache-airflow, PyPI1.10.0OSV
  • apache-airflow, PyPI1.10.1OSV
  • apache-airflow, PyPI1.10.10OSV
  • apache-airflow, PyPI1.10.10rc1OSV
  • apache-airflow, PyPI1.10.10rc2OSV
  • apache-airflow, PyPI1.10.10rc3OSV
  • apache-airflow, PyPI1.10.10rc4OSV
  • apache-airflow, PyPI1.10.10rc5OSV
  • apache-airflow, PyPI1.10.11OSV
  • apache-airflow, PyPI1.10.11rc1OSV
  • apache-airflow, PyPI1.10.11rc2OSV
  • apache-airflow, PyPI1.10.12OSV
  • apache-airflow, PyPI1.10.12rc1OSV
  • apache-airflow, PyPI1.10.12rc2OSV
  • apache-airflow, PyPI1.10.12rc3OSV
  • apache-airflow, PyPI1.10.12rc4OSV
  • apache-airflow, PyPI1.10.13OSV
  • apache-airflow, PyPI1.10.13rc1OSV
  • apache-airflow, PyPI1.10.14OSV
  • apache-airflow, PyPI1.10.14rc1OSV
  • apache-airflow, PyPI1.10.14rc2OSV
  • apache-airflow, PyPI1.10.14rc3OSV
  • apache-airflow, PyPI1.10.14rc4OSV
  • apache-airflow, PyPI1.10.15OSV
  • apache-airflow, PyPI1.10.15rc1OSV
  • apache-airflow, PyPI1.10.1b1OSV
  • apache-airflow, PyPI1.10.1rc2OSV
  • apache-airflow, PyPI1.10.2OSV
  • apache-airflow, PyPI1.10.2b2OSV
  • apache-airflow, PyPI1.10.2rc1OSV
  • apache-airflow, PyPI1.10.2rc2OSV
  • apache-airflow, PyPI1.10.2rc3OSV
  • apache-airflow, PyPI1.10.3OSV
  • apache-airflow, PyPI1.10.3b1OSV
  • apache-airflow, PyPI1.10.3b2OSV
  • apache-airflow, PyPI1.10.3rc1OSV
  • apache-airflow, PyPI1.10.3rc2OSV
  • apache-airflow, PyPI1.10.4OSV
  • apache-airflow, PyPI1.10.4b2OSV
  • apache-airflow, PyPI1.10.4rc1OSV
  • apache-airflow, PyPI1.10.4rc2OSV
  • apache-airflow, PyPI1.10.4rc3OSV
  • apache-airflow, PyPI1.10.4rc4OSV
  • apache-airflow, PyPI1.10.4rc5OSV
  • apache-airflow, PyPI1.10.5OSV
  • apache-airflow, PyPI1.10.5rc1OSV
  • apache-airflow, PyPI1.10.6OSV
  • apache-airflow, PyPI1.10.6rc1OSV
  • apache-airflow, PyPI1.10.6rc2OSV
  • apache-airflow, PyPI1.10.7OSV

References 8