Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as trusted Airflow UI user
-
DeliveryLocate target BashOperator DAG using unsafe XCom templating
-
ExploitModify XCom value to contain shell injection payload
-
ExecutionTrigger or await scheduled BashOperator task execution
-
PersistAirflow templates poisoned XCom value into bash command string
-
ImpactInjected commands execute on worker with worker process privileges
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires all three of the following specific conditions simultaneously: (1) the Airflow deployment must contain at least one production DAG that replicates the unsafe XCom-to-BashOperator string interpolation pattern from the example_xcom documentation - directly embedding |
| Impact | The submitted CVSS score of 8.1 (AV:N/AC:L/PR:L) substantially overstates real-world risk for this vulnerability. Three compounding constraints limit actual exposure: the vulnerable code is example documentation, not production code shipped in Airflow releases; Apache explicitly states example_dags are not intended for production use; and exploitation requires a UI user who already holds XCom modification privileges - a role Apache characterizes as 'highly trusted.' EPSS at 0.03% (7th percentile) and SSVC Exploitation: none confirm no observed or reported exploitation in the wild. No public exploit code exists. Even a mid-sized data engineering team in malbork would face this risk only if a developer had specifically replicated the unsafe BashOperator pattern from documentation into their own production DAGs. The SSVC Technical Impact: total metric reflects the ceiling of what worker-level code execution could achieve, but this is conditioned entirely on a non-default deployment scenario. This should be treated as a documentation/pattern hygiene finding rather than an emergency patching priority for most organizations. |
| Exploit ScenarioDerived | An authenticated Airflow UI user with XCom write access navigates to the XCom interface and modifies a value to contain a shell injection payload such as |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
Unsafe XCom templating in Apache Airflow's documented example DAG (example_xcom.py) allowed an authenticated UI user with XCom modification privileges to inject arbitrary shell commands that execute on the Airflow worker node. The vulnerability exists only in deployments where operators replicated the example's pattern of directly embedding XComArg references via f-string interpolation into BashOperator command strings - a pattern explicitly not intended for production. No public exploit code exists, EPSS is 0.03%, and Apache itself rates the practical severity as Low, though worker-level code execution is the worst-case outcome for affected deployments.
RemediationAI
Upgrade to Apache Airflow 3.2.0, whose updated documentation and example code demonstrate the corrected pattern. For operators who have replicated the unsafe XCom-to-BashOperator f-string interpolation pattern in their own production DAGs, immediate remediation requires refactoring those DAGs: replace direct XComArg embedding in bash command strings with the env parameter on BashOperator (e.g., env={"MY_VAR": str(XComArg(task))}, append_env=True) and reference the value via $MY_VAR in the shell command. The exact corrected pattern is visible in PR #63200 at https://github.com/apache/airflow/pull/63200. As a compensating control, restrict XCom modification permissions in the Airflow UI to the minimum necessary set of users - this reduces the insider threat surface without requiring a code change. Ensure the example_dags directory is not deployed or enabled in any production Airflow environment, per Apache's own guidance.
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
Apache Airflow's XCom (Cross-Communication) mechanism allows tasks to exchange data, which can then be referenced in downstream task definitions via XComArg. The vulnerable example_xcom.py DAG illustrated BashOperator usage by embedding XComArg values directly into shell command strings using Python f-string interpolation - for example, f'echo "{XComArg(bash_push)}"'. At runtime, Airflow templates these XCom values into the bash command before execution, meaning any shell metacharacters present in the XCom value are passed directly to the shell interpreter, constituting code injection (CWE-94: Improper Control of Generation of Code). The GitHub PR #63200 confirms the fix: XCom values are moved to the BashOperator's env parameter as environment variables (env={"RETURNED_VALUE": str(XComArg(bash_push))}), which eliminates shell metacharacter interpretation. Affected CPE: cpe:2.3:a:apache_software_foundation:apache_airflow:*:*:*:*:*:*:*:* for versions prior to 3.2.0.
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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
AC:H because exploitation requires a non-default, deliberately replicated unsafe pattern in production DAGs; PR:L for authenticated UI user with XCom write access.
Primary rating from Vendor (apache).
CVSS VectorVendor: apache
Lifecycle Timeline
3DescriptionCVE.org
The example example_xcom that was included in airflow documentation implemented unsafe pattern of reading value from xcom in the way that could be exploited to allow UI user who had access to modify XComs to perform arbitrary execution of code on the worker. Since the UI users are already highly trusted, this is a Low severity vulnerability.
It does not affect Airflow release - example_dags are not supposed to be enabled in production environment, however users following the example could replicate the bad pattern. Documentation of Airflow 3.2.0 contains version of the example with improved resiliance for that case.
Users who followed that pattern are advised to adjust their implementations accordingly.
Blast Radius
ecosystem impact- 10 pypi packages depend on apache-airflow (1 direct, 9 indirect)
Ecosystem-wide dependent count for version 3.2.0.
Executive ViewAI
Apache Airflow deployments using the documented XCom templating example are vulnerable to command injection by authenticated users with XCom modification privileges, with worst-case impact of worker node code execution. No public exploit identified at time of analysis; exploitation requires elevated privileges and adoption of this specific code pattern. EPSS 0.0% and Apache's own Low severity rating indicate minimal real-world exploitability.
Apply vendor patch.
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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
More in Apache Airflow
View allRemote code execution in Apache Airflow before 3.3.0 lets a DAG author embed a malicious trigger whose attacker-controll
Unsafe deserialization in Apache Airflow 3.3.0's Task SDK allows an authenticated DAG author to cause arbitrary module i
Unsafe deserialization in Apache Airflow 3.0.0 through 3.3.0 allows any DAG author to achieve arbitrary code execution i
Remote code execution in Apache Airflow 3.1.x allows authenticated DAG Authors to execute arbitrary code in the webserve
Command injection in Apache Airflow's BashOperator documentation example allows authenticated attackers to escalate priv
CVE-2026-30911 is a security vulnerability (CVSS 8.1) that allows any authenticated task instance. High severity vulnera
Authorization bypass in Apache Airflow's Backfill API (all versions prior to 3.3.1) allows any authenticated user holdin
Information disclosure in Apache Airflow 3.0.0 through 3.1.x stems from incomplete secret masking and under-documented w
Apache Airflow 3.0.0 through 3.1.x exposes JWT authentication tokens in application logs, allowing any authenticated UI
CVE-2026-28779 is a security vulnerability (CVSS 7.5) that allows any application co-hosted under the same domain. High
Apache Airflow before 3.2.0 exposes SQL exception stack traces through API responses despite api/expose_stack_traces=fal
Apache Airflow 3.0.x prior to 3.2.0 allows remote unauthenticated attackers to trigger unauthorized DAG (Directed Acycli
EUVD-2025-209465
GHSA-q2hg-643c-gw8h
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB