Skip to main content

Apache Airflow CVE-2025-54941

MEDIUM
OS Command Injection (CWE-78)
2025-10-30 security@apache.org
4.6
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to Airflow web UI
  2. Exploit
    Set malicious parameter on example_dag_decorator
  3. Execution
    Trigger DAG run referencing attacker server
  4. Impact
    Execute arbitrary code on worker

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires that example DAGs - specifically example_dag_decorator - are enabled in production, which is NOT the default (Airflow ships with example DAG loading, e.g. core.load_examples / AIRFLOW__CORE__LOAD_EXAMPLES, disabled in typical production); alternatively, the vulnerable example code must have been copied into a user-built DAG. The attacker must be an authenticated Airflow UI user (PR:L) able to set the non-validated parameter and trigger the DAG, and the DAG run must actually be executed (UI:R). Limiting factors that reduce realistic risk: authentication is required, the triggering run is required, and most production deployments disable example DAGs by default - so only misconfigured or copy-reused environments are exposed.

Impact

Signals converge on a LOW real-world priority despite the OS-command-injection classification. The CVSS base score is only 4.6 (Medium), and the vector itself tempers impact: AV:N but PR:L (an authenticated Airflow UI user is required) and UI:R (a DAG run must be triggered), with C:L/I:L/A:N. EPSS is 0.49% (40th percentile) - low probability of exploitation. The CVE is NOT in CISA KEV and no POC is referenced, so exploitation status is 'no public exploit identified at time of analysis.' Crucially, the description states the issue is only reachable when example DAGs are enabled in production (explicitly NOT the default) or when the vulnerable example code has been copied into a custom DAG - a precondition that sharply narrows the exposed population below what the AV:N vector alone suggests. One conflict worth flagging: the description says an attacker can 'execute code on worker,' which normally implies HIGH technical impact (C:H/I:H), yet the assigned vector rates only C:L/I:L - verify the true impact of worker code execution with the vendor, as the official score may understate it. Net: a genuine but low-urgency, authenticated, non-default-configuration issue, not a widespread-exploitation emergency.

Exploit ScenarioDerived

An authenticated Airflow web-UI user with permission to configure or trigger the example_dag_decorator DAG supplies a crafted, non-validated parameter that redirects the task to an attacker-controlled server, resulting in command execution on the Airflow worker. This requires example DAGs to be enabled in production (not the default) or the vulnerable example code to have been reused in a custom DAG, plus user interaction to trigger the run. No public exploit code has been identified at time of analysis.

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

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

Alert me

AnalysisAIv1 – Oct 08, 2026

OS command injection in Apache Airflow's bundled example_dag_decorator example DAG allows an authenticated web UI user to supply an unvalidated parameter that redirects the example to an attacker-controlled server and executes code on the Airflow worker. Exploitation is narrow: it requires that example DAGs be explicitly enabled in production (not the default, since Airflow ships example loading disabled) or that the vulnerable example code was copied into a user-built DAG, and it further requires the user to trigger an actual DAG run, so only misconfigured or copy-reused environments are realistically exposed. No public exploit has been identified at time of analysis, EPSS is low at 0.49% (~40th percentile), and per NVD the issue is rated modestly (CVSS 3.1 base 4.6), with the independent assessment raising attack complexity to High; the vendor-released fix is Airflow 3.0.5.

RemediationAI

Upgrade to Apache Airflow 3.0.5, which contains the corrected example_dag_decorator implementation, and review any local copy of that example before upgrading. As an interim or compensating control, keep example DAGs disabled by setting AIRFLOW__CORE__LOAD_EXAMPLES=False (equivalently core.load_examples = False in airflow.cfg) - this is already the expected production default, so enabling it is itself the misconfiguration that creates exposure - and delete or rewrite any example_dag_decorator code incorporated into custom DAGs so the unvalidated parameter is removed or strictly allow-listed to trusted hosts. Restrict Airflow UI access to trusted, authenticated users, since the attack requires an authenticated UI account able to set the parameter and trigger a run, and note that tightening UI permissions reduces convenience for legitimate operators but removes the PR:L prerequisite. Vendor guidance is in the Apache advisory at https://lists.apache.org/thread/c6q6nofc6xl5bms039ks9b34v0v36df1 and the oss-security thread at http://www.openwall.com/lists/oss-security/2025/10/29/6.

Affected Packages

pypi apache-airflow fix: 3.0.5

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 is CWE-78 (OS Command Injection): the example_dag_decorator example DAG passes a user-controllable parameter into a server-side operation on the Airflow worker without validating it, so a UI user can point the DAG at a malicious server and have code executed in the worker's context. Airflow's DAG-authoring framework (@dag/@task decorators) renders example DAGs in the webserver UI and executes them via the scheduler/worker; example DAG loading is governed by the core.load_examples / AIRFLOW__CORE__LOAD_EXAMPLES setting, which is disabled in typical production deployments, meaning the vulnerable code path is usually absent unless explicitly enabled or copy-pasted into custom DAGs. The CPE cpe:2.3:a:apache:airflow:*:*:*:*:*:*:*:* indicates the advisory applies to Airflow broadly rather than a single pinned release, with the corrective changes landing in 3.0.5. The CVSS vector (AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N in NVD; independent assessment sets AC:H) confirms an authenticated UI user (PR:L) acting over the network and a required user interaction (UI:R), with limited confidentiality and integrity impact and no availability impact.

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

NVD PRIMARY 4.6 MEDIUM
AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N
vuln.today AI 3.7 LOW

Reachable only when non-default example DAGs are enabled (AC:H) by an authenticated UI user (PR:L) who must trigger the run (UI:R); impact kept at C:L/I:L per the vendor rating, A:N.

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

Primary rating from NVD.

CVSS VectorNVD

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

DescriptionNVD

An example dag example_dag_decorator had non-validated parameter that allowed the UI user to redirect the example to a malicious server and execute code on worker. This however required that the example dags are enabled in production (not default) or the example dag code copied to build your own similar dag. If you used the example_dag_decorator please review it and apply the changes implemented in Airflow 3.0.5 accordingly.

Blast Radius

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

Ecosystem-wide dependent count for version 3.0.0.

Threat Intelligence Overview

EPSS Score
0.5%
Top 60% exploitable
Prevalence
High
widely deployed enterprise data-orchestration platform, though vulnerable example DAGs are non-default
Data Quality
3 sources
Confidence: Low

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.5%
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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

Affected Products (CPE)NVD

cpe:2.3:a:apache:airflow:*:*:*:*:*:*:*:*
CVE-2020-13927 CRITICAL POC
9.8 Nov 10

The previous default setting for Airflow's Experimental API was to allow all API requests without authentication, but th

CVE-2020-11978 HIGH POC
8.8 Jul 17

An issue was found in Apache Airflow versions 1.10.10 and below. Rated high severity (CVSS 8.8), this vulnerability is r

CVE-2021-38540 CRITICAL POC
9.8 Sep 09

The variable import endpoint was not protected by authentication in Airflow >=2.0.0, <2.1.3. Rated critical severity (CV

CVE-2020-11981 CRITICAL POC
9.8 Jul 17

An issue was found in Apache Airflow versions 1.10.10 and below. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2022-40127 HIGH POC
8.8 Nov 14

A vulnerability in Example Dags of Apache Airflow allows an attacker with UI access who can trigger DAGs, to execute arb

CVE-2022-24288 HIGH POC
8.8 Feb 25

In Apache Airflow, prior to version 2.2.4, some example DAGs did not properly sanitize user-provided params, making them

CVE-2020-17526 HIGH POC
7.7 Dec 21

Incorrect Session Validation in Apache Airflow Webserver versions prior to 1.10.14 with default config allows a maliciou

CVE-2026-82311 CRITICAL
9.8 Sep 15

Insufficient session expiration in apache-airflow-providers-fab 2.4.2 through 3.9.0 means an attacker who already holds

CVE-2026-76187 CRITICAL
9.8 Sep 15

Authentication bypass in the Apache Airflow Keycloak auth manager provider (apache-airflow-providers-keycloak below 0.10

CVE-2023-25754 CRITICAL
9.8 May 08

Privilege Context Switching Error vulnerability in Apache Software Foundation Apache Airflow.6.0. Rated critical severit

CVE-2023-22884 CRITICAL
9.8 Jan 21

Improper Neutralization of Special Elements used in a Command ('Command Injection') vulnerability in Apache Software Fou

CVE-2022-40189 CRITICAL
9.8 Nov 22

Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') vulnerability in Apache Airfl

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