Skip to main content

Apache Airflow CVE-2026-68076

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

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as any-team Airflow user
  2. Delivery
    Enumerate or guess victim team's connection identifier
  3. Exploit
    Craft _teamname___connid namespace string
  4. Execution
    Submit POST /api/v2/connections/test with crafted identifier
  5. Persist
    Unpatched backend resolves victim team's environment-variable credential
  6. Impact
    Airflow authenticates outward using victim team's credentials

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Four simultaneous non-default conditions are required for exploitation. First, [core] multi_team must be explicitly enabled in the Airflow configuration-this is not set in default installations. Second, [core] test_connection must be set to Enabled; the factory default is Disabled, meaning an operator must have deliberately activated this feature. Third, team-scoped secrets must be provisioned as environment variables in the API-server process using the EnvironmentVariablesBackend; deployments that store team secrets in the database, Vault, or any other backend are not affected by this code path. Fourth, the attacker must know or successfully enumerate the encoded connection identifier belonging to the target team, following the _<TEAM_NAME>___<CONN_ID> naming convention. The attacker must be an authenticated Airflow user in any team within the same deployment (CVSS PR:L equivalent). Exploitation cannot directly expose credential values-the endpoint uses credentials for an outbound authentication probe but does not return them. Redirecting that outbound probe to an attacker-controlled host is separately blocked by Airflow.

Impact

CVSS data is not provided in the available intelligence, so risk must be assessed from the vulnerability description, patch diff, and configuration prerequisites alone. The attack requires a rare and deliberate confluence of three non-default Airflow configuration flags simultaneously-multi_team mode enabled, test_connection flipped from its factory default of Disabled to Enabled, and the environment-variable secrets backend specifically in use for team-scoped secrets-which substantially reduces the exposed population relative to Airflow's overall install base. EPSS data is unavailable, and the vulnerability is not listed in CISA KEV; no public exploit code has been identified. Even a mid-sized municipal IT department in walbrzych running Airflow for ETL orchestration would only be in scope if all three configuration prerequisites are met together, which is a narrow operational profile. The credential-use-without-exposure impact model-the test_connection endpoint authenticates outward rather than returning credential values-both limits attacker utility (they cannot exfiltrate secrets directly) and complicates defender detection (cross-team authentication may appear as legitimate traffic originating from the victim team). Risk priority is moderate for qualifying deployments but negligible for the much larger population running single-team or non-environment-variable-backend configurations.

Exploit ScenarioDerived

An authenticated Airflow user in Team A, operating against a multi-team deployment where test_connection is Enabled and team secrets are stored as environment variables, crafts a connection identifier that spells out Team B's namespace-for example _team_b___prod_database or, to defeat the old underscore-blind regex, _team_b_prod___db_primary where the team name contains an underscore-and submits it to POST /api/v2/connections/test. The unpatched EnvironmentVariablesBackend fails to recognize the cross-team namespace pattern and resolves AIRFLOW_CONN__TEAM_B___PROD_DATABASE from the API-server environment, causing Airflow to authenticate outward to Team B's database using Team B's credentials without returning those credentials in the API response. No public exploit code has been identified at time of analysis, but the attack mechanic is straightforward to implement once an attacker understands the naming convention.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 12, 2026

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.

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.

Affected VersionsENISA

Apache Airflow 0 <3.3.1

Affected Packages

pypi apache-airflow fix: 3.3.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

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.

Know when Apache Airflow gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

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

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.

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.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
High
widely deployed enterprise workflow orchestration platform
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

27
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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-2026-68968 HIGH
7.5 Aug 12

Authorization bypass in Apache Airflow's Backfill API (all versions prior to 3.3.1) allows any authenticated user holdin

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

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