Skip to main content

Apache Airflow EUVDEUVD-2026-57271

| CVE-2026-68968 HIGH
Interpretation Conflict (CWE-436)
2026-08-12 apache GHSA-j4jc-cq9h-xrhr
7.5
CVSS 3.1 · Vendor: apache
Share

Severity by source

Vendor (apache) PRIMARY
7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI
6.3 MEDIUM

Requires authenticated DAG edit permission (PR:L); impact covers confidentiality, integrity, and availability of any DAG's backfills (C:L/I:L/A:L), not confidentiality alone.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (apache).

CVSS VectorVendor: apache

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

6
Analysis Updated
Aug 13, 2026 - 13:31 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Aug 13, 2026 - 13:22 vuln.today
cvss_changed
CVSS changed
Aug 13, 2026 - 13:22 NVD
7.5 (HIGH)
Source Code Evidence Fetched
Aug 12, 2026 - 16:07 vuln.today
Analysis Generated
Aug 12, 2026 - 16:07 vuln.today
CVE Published
Aug 12, 2026 - 15:27 cve.org
HIGH

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 12 pypi packages depend on apache-airflow (1 direct, 11 indirect)

Ecosystem-wide dependent count for version 3.3.1.

DescriptionCVE.org

Apache Airflow's Backfill API authorized a request against a Dag id supplied by the caller whenever the backfill_id path segment failed to parse. The authorization dependency parsed it with int() while the route handler parsed it as pydantic's NonNegativeInt, which accepts values int() rejects (1.0 coerces to 1); FastAPI resolves dependencies before endpoint validation, so the two acted on different Dags. An authenticated user holding edit permission on any single Dag could therefore read, pause and cancel backfills belonging to any other Dag, including moving another Dag's queued runs to failed. No non-default configuration is required and backfill ids are sequential, so finding a target is trivial. Users are advised to upgrade to apache-airflow 3.3.1 or later, which parses the backfill id with the same type the routes declare.

AnalysisAI

Authorization bypass in Apache Airflow's Backfill API (all versions prior to 3.3.1) allows any authenticated user holding edit permission on a single DAG to read, pause, cancel, and fail backfills belonging to any other DAG. The flaw is a type-parsing mismatch in FastAPI's dependency resolution layer: the authorization dependency parsed the backfill_id path parameter with Python's int() while the route handler declared NonNegativeInt via Pydantic, which in lax mode coerces inputs like '42.0' that int() rejects-causing the two components to authorize and act on different DAGs. Backfill IDs are sequential, making cross-DAG enumeration trivial; no public exploit code has been identified at time of analysis, though the technique is directly reproducible from the published patch diff.

Technical ContextAI

The root cause is CWE-436 (Interpretation Conflict), a vulnerability class where two components parse the same input differently and reach conflicting security decisions. In Apache Airflow's FastAPI-based REST API (airflow-core/src/airflow/api_fastapi/core_api/security.py), the requires_access_backfill dependency resolved the backfill_id path parameter using Python's built-in int(), while every Backfill route handler declared it as Pydantic's NonNegativeInt. FastAPI resolves Depends() before executing endpoint validation; Pydantic's lax coercion mode accepts float-string representations such as '42.0' and '42.00', coercing them to integer 42, whereas int('42.0') raises a ValueError. When int() raised, the dependency fell back to authorizing against the caller-supplied dag_id in the request body or query string, then FastAPI passed the original string to the endpoint which Pydantic silently coerced-the dependency and handler acted on entirely different DAGs. The fix in PR #70889 introduces a shared TypeAdapter[NonNegativeInt] instance (_BACKFILL_ID_ADAPTER) used identically in both the security dependency and the routes, eliminating the coercion divergence. Affected CPE: cpe:2.3:a:apache_software_foundation:apache_airflow:*:*:*:*:*:*:*:* with version range < 3.3.1.

RemediationAI

Upgrade to Apache Airflow 3.3.1 or later, which resolves the type-parsing mismatch by using a shared TypeAdapter[NonNegativeInt] in the authorization dependency-ensuring the dependency and handler parse the backfill_id path parameter identically. The upstream fix is available in GitHub PR #70889 (https://github.com/apache/airflow/pull/70889). For deployments unable to upgrade immediately, restrict Backfill API write access by scoping role-based permissions so users hold DAG edit rights only on the minimum required set of DAGs; this limits blast radius but does not close the bypass, since any user with any DAG edit permission can exploit the flaw. Blocking untrusted network clients from reaching the Airflow REST API is an additional layer of defense, though it may interrupt legitimate automation. There is no configuration flag to disable Backfill API endpoint routing without patching.

CVE-2026-33264 CRITICAL
9.8 Jul 07

Remote code execution in Apache Airflow before 3.3.0 lets a DAG author embed a malicious trigger whose attacker-controll

CVE-2026-67587 HIGH
8.8 Aug 12

Unsafe deserialization in Apache Airflow 3.3.0's Task SDK allows an authenticated DAG author to cause arbitrary module i

CVE-2026-58076 HIGH
8.8 Aug 12

Unsafe deserialization in Apache Airflow 3.0.0 through 3.3.0 allows any DAG author to achieve arbitrary code execution i

CVE-2026-33858 HIGH
8.8 Apr 13

Remote code execution in Apache Airflow 3.1.x allows authenticated DAG Authors to execute arbitrary code in the webserve

CVE-2026-30898 HIGH
8.8 Apr 18

Command injection in Apache Airflow's BashOperator documentation example allows authenticated attackers to escalate priv

CVE-2025-54550 HIGH
8.1 Apr 15

Unsafe XCom templating in Apache Airflow's documented example DAG (`example_xcom.py`) allowed an authenticated UI user w

CVE-2026-30911 HIGH
8.1 Mar 17

CVE-2026-30911 is a security vulnerability (CVSS 8.1) that allows any authenticated task instance. High severity vulnera

CVE-2025-66236 HIGH
7.5 Apr 13

Information disclosure in Apache Airflow 3.0.0 through 3.1.x stems from incomplete secret masking and under-documented w

CVE-2026-31987 HIGH
7.5 Apr 16

Apache Airflow 3.0.0 through 3.1.x exposes JWT authentication tokens in application logs, allowing any authenticated UI

CVE-2026-28779 HIGH
7.5 Mar 17

CVE-2026-28779 is a security vulnerability (CVSS 7.5) that allows any application co-hosted under the same domain. High

CVE-2026-30912 HIGH
7.5 Apr 18

Apache Airflow before 3.2.0 exposes SQL exception stack traces through API responses despite api/expose_stack_traces=fal

CVE-2026-32228 HIGH
7.5 Apr 18

Apache Airflow 3.0.x prior to 3.2.0 allows remote unauthenticated attackers to trigger unauthorized DAG (Directed Acycli

Share

EUVD-2026-57271 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy