Skip to main content

Apache Airflow EUVDEUVD-2026-57265

| CVE-2026-68076 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-08-12 apache GHSA-75mg-c62r-v95g
5.4
CVSS 3.1 · Vendor: apache
Share

Severity by source

Vendor (apache) PRIMARY
5.4 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L
vuln.today AI
5.9 MEDIUM

Network-accessible API (AV:N) requires authenticated user (PR:L) and three non-default configuration prerequisites (AC:H); impact is unauthorized credential use (C:H) and lateral outbound authentication (I:L) with no availability effect.

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

Primary rating from Vendor (apache).

CVSS VectorVendor: apache

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

Lifecycle Timeline

3
Source Code Evidence Fetched
Aug 12, 2026 - 16:14 vuln.today
Analysis Generated
Aug 12, 2026 - 16:14 vuln.today
CVE Published
Aug 12, 2026 - 15:23 cve.org
MEDIUM

Blast Radius

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

Ecosystem-wide dependent count for version 3.3.1.

DescriptionCVE.org

Apache Airflow's environment-variable secrets backend resolved a team-scoped Connection or Variable from the wrong team's scope. The guard meant to prevent this only ran when no team scope was supplied, and its pattern could not match a team name containing an underscore, which team names are allowed to contain. When the guard did not apply, the lookup fell through to an unconditional global read that resolved the stored AIRFLOW_CONN__<TEAM>___<ID> variable regardless of which team asked. In multi-team mode an authenticated user of one team could therefore have POST /api/v2/connections/test resolve another team's Connection and authenticate outward with that team's credentials; the endpoint uses the credentials rather than returning them. Exploitation requires [core] multi_team enabled, [core] test_connection set to Enabled (it ships Disabled), team-scoped secrets provisioned as environment variables in the API-server process, and knowledge of the encoded identifier. Redirecting the test at an attacker-controlled host is separately blocked. Users are advised to upgrade to apache-airflow 3.3.1 or later.

AnalysisAI

Cross-team credential access in Apache Airflow before 3.3.1 allows authenticated members of one team to invoke another team's Connection credentials through the POST /api/v2/connections/test API endpoint, exploiting a broken namespace-isolation guard in the environment-variable secrets backend. The flaw-confirmed by Apache with patches in PRs #70736 and #70902-combines a guard that only triggered on unscoped (global) requests with a regex incapable of matching team names containing underscores, even though underscores are explicitly permitted in Airflow team name validation. Exploitation requires a precise configuration alignment of multi_team mode, an explicitly enabled test_connection endpoint, and environment-variable-provisioned team secrets; no public exploit has been identified at time of analysis.

Technical ContextAI

The EnvironmentVariablesBackend class in airflow-core/src/airflow/secrets/environment_variables.py namespaces team-scoped secrets using the convention AIRFLOW_CONN__<TEAM>___<SECRET_ID>. The pre-patch guard method _is_team_specific_accessed_as_global(secret_id, team_name) had two independent defects captured by CWE-639 (Authorization Bypass Through User-Controlled Key): first, the method only executed when team_name was None, meaning authenticated users who supplied their own team scope as a parameter bypassed the check entirely; second, the guard's regex r"_[^_]+___.+" excluded underscores from the team-name segment via [^_]+, yet Airflow validates team names against ^[a-zA-Z0-9_-]{3,50}$, explicitly allowing underscores. When either condition caused the guard to not apply, lookup fell through to an unconditional global environment variable read that resolved AIRFLOW_CONN__<OTHER_TEAM>___<ID> regardless of which team initiated the request. CPE cpe:2.3:a:apache_software_foundation:apache_airflow:*:*:*:*:*:*:*:* identifies the full affected product line. The fix in PR #70736 replaces the broken guard with _names_a_team_namespace(secret_id), which runs unconditionally on every lookup and uses the corrected regex r"_.+___.+" to block any identifier that spells out a team-namespace pattern, with a second PR #70902 completing the fix.

RemediationAI

Upgrade to apache-airflow 3.3.1 or later, which delivers the corrected namespace-isolation logic from upstream PRs #70736 (https://github.com/apache/airflow/pull/70736) and #70902 (https://github.com/apache/airflow/pull/70902) as documented in the Apache advisory at https://lists.apache.org/thread/v4mc51dgmrc1t82mhzsngsgzo2gxsf2l. As an immediate compensating control requiring no restart of DAG workers, set test_connection = Disabled under the [core] section in airflow.cfg-this is already the factory default and eliminates the POST /api/v2/connections/test endpoint entirely; connection testing is a developer convenience and is not invoked at DAG runtime, so disabling it carries no workflow execution impact. Operators may also migrate team-scoped secrets from environment variables to a different backend such as the Airflow database backend or HashiCorp Vault, which removes the vulnerable EnvironmentVariablesBackend code path without requiring an immediate version upgrade; note that migrating secrets backends requires re-provisioning all existing team Connections and Variables in the new backend. Restricting API access to the connections/test endpoint via API gateway ACL or network policy provides defense depth but is not a substitute for patching, as the restriction must be applied per-team and is operationally fragile.

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

We need to produce a JSON object per the instructions. Let's analyze each field. First, product_name: "1-3 words ONLY.

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-57265 vulnerability details – vuln.today

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