GHSA-33g2-gx67-c2h3
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege Airflow user
-
DeliverySubmit dag_run.conf with sensitive key nested >5 dict levels via REST API
-
ExploitTrigger DAG execution
-
ExecutionSecretsMasker depth guard exits before evaluating sensitive key name
-
PersistCleartext secret written to task log or rendered template output
-
ImpactAttacker reads log to harvest credential
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated Airflow account with at minimum DAG trigger privileges or XCom write access, confirmed by CVSS PR:L (low privileges required). The attacker must supply or influence a structured payload containing a sensitive key name recognized by |
| Impact | CVSS 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N) reflects a network-accessible, low-complexity flaw requiring only low-privilege authentication with high confidentiality impact and no integrity or availability consequence. In practice, real-world risk is meaningfully lower than the raw score implies. Exploitation requires the attacker to be an authenticated Airflow user who can supply or influence deeply nested dict payloads - an uncommon pattern for genuine production secrets, which are more typically stored in Airflow's Connections or Variables store at shallow nesting depths. EPSS of 0.02% at the 5th percentile is consistent with a targeted, low-automation flaw. No KEV listing and no public POC further reduce urgency. The primary realistic threat model is insider abuse or post-compromise lateral movement by a low-privilege account attempting to harvest credentials visible in logs. There is no conflict between the CVSS network vector and the description - the API and UI endpoints that accept dag_run.conf are network-accessible, validating AV:N. |
| Exploit ScenarioDerived | An authenticated low-privilege Airflow user triggers a DAG via the REST API, supplying a dag_run.conf body such as |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 01, 2026
The SecretsMasker component in Apache Airflow prior to 3.2.2 returns cleartext sensitive values when those values are stored under recognized sensitive key names (password, token, secret, api_key) nested deeper than five dict levels in structured payloads. Authenticated low-privilege users can craft dag_run.conf or XCom payloads exceeding this depth threshold, causing secrets to surface in task logs, rendered templates, and API responses. No public exploit code exists and EPSS is 0.02% at the 5th percentile - this is not confirmed actively exploited (not in CISA KEV) - but the CVSS confidentiality impact is rated High given that the bypass can expose real credentials to any user who can review logs.
RemediationAI
Upgrade to Apache Airflow 3.2.2 or later, which includes the restructured SecretsMasker from PR #65912 (https://github.com/apache/airflow/pull/65912). The patched release ensures key-name-based redaction traverses dict structures at any nesting depth, eliminating the bypass. If immediate upgrade is not feasible, enforce a policy that sensitive credentials stored in dag_run.conf or XCom payloads are placed at a nesting depth of four or fewer levels, keeping them within the existing max_depth guard - note this is a fragile workaround and does not fix the underlying defect. Additionally, restrict task log access and the rendered-template view in the Airflow UI to the minimum set of trusted users, reducing the surface area for credential harvesting. Review existing task logs for any instances of cleartext sensitive key names (password, token, secret, api_key) that may have been exposed prior to patching. The vendor advisory is at https://lists.apache.org/thread/33635mv3zjb75wn5453c5yf9trs8x2om.
Affected VersionsENISA
Affected Packages
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 root cause (CWE-200: Exposure of Sensitive Information to an Unauthorized Actor) lives in _redact_all() within airflow_shared/secrets_masker/secrets_masker.py (CPE: cpe:2.3:a:apache:airflow:*:*:*:*:*:*:*:*). Prior to the fix, a single depth > max_depth guard (max_depth defaulting to 5) controlled the entire recursive descent, covering both key-name-based redaction and pattern-based string masking. When a dict containing a sensitive key was nested at depth 6 or beyond, the function short-circuited and returned the subtree unchanged rather than evaluating key names. The PR #65912 fix decouples these two behaviors: dict traversal for key-name-based redaction is now unbounded (relying on Python's own recursion limit and a fail-closed <redaction-failed> except clause for self-referential structures), while the depth cap is retained only for the computationally expensive pattern-based string masking pass. Test cases in the PR confirm that password, token, secret, and api_key are correctly masked at depths 5, 6, and 7 post-fix.
Know when 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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
Lifecycle Timeline
4Description PRE-NVD
Blast Radius
ecosystem impact- 9 pypi packages depend on apache-airflow (5 direct, 4 indirect)
Ecosystem-wide dependent count for version 3.2.2.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
The previous default setting for Airflow's Experimental API was to allow all API requests without authentication, but th
An issue was found in Apache Airflow versions 1.10.10 and below. Rated high severity (CVSS 8.8), this vulnerability is r
The variable import endpoint was not protected by authentication in Airflow >=2.0.0, <2.1.3. Rated critical severity (CV
An issue was found in Apache Airflow versions 1.10.10 and below. Rated critical severity (CVSS 9.8), this vulnerability
A vulnerability in Example Dags of Apache Airflow allows an attacker with UI access who can trigger DAGs, to execute arb
In Apache Airflow, prior to version 2.2.4, some example DAGs did not properly sanitize user-provided params, making them
Incorrect Session Validation in Apache Airflow Webserver versions prior to 1.10.14 with default config allows a maliciou
Insufficient session expiration in apache-airflow-providers-fab 2.4.2 through 3.9.0 means an attacker who already holds
Authentication bypass in the Apache Airflow Keycloak auth manager provider (apache-airflow-providers-keycloak below 0.10
Privilege Context Switching Error vulnerability in Apache Software Foundation Apache Airflow.6.0. Rated critical severit
Improper Neutralization of Special Elements used in a Command ('Command Injection') vulnerability in Apache Software Fou
Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') vulnerability in Apache Airfl
EUVD-2026-33589
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB