Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
DAG author API access is network-reachable (AV:N) with no special conditions (AC:L); authenticated low-privilege role required (PR:L); payload executes inside the separate scheduler process causing scope change (S:C); full C/I/A impact on the scheduler.
Primary rating from Vendor (apache).
CVSS VectorVendor: apache
Lifecycle Timeline
3Blast Radius
ecosystem impact- 4 pypi packages depend on apache-airflow (2 direct, 2 indirect)
Ecosystem-wide dependent count for version 3.3.0.
DescriptionCVE.org
Apache Airflow 3.3.0 moved human-in-the-loop tasks from the triggerer to a new awaiting_input task state swept by the scheduler. That sweep deserializes the task instance's next_kwargs without an allow-list, so a Dag author - who controls that value through the task execution API - can cause an arbitrary module import and object instantiation inside the scheduler process, or terminate the scheduler job. No non-default configuration is required: the sweep runs unconditionally every 15 seconds, and the default allowed_deserialization_classes setting does not cover this code path. Versions before 3.3.0 are not affected, because human-in-the-loop tasks deferred onto the triggerer instead. This is a different code path from CVE-2026-58076, which covers the same unguarded exception-node deserialization reached elsewhere - deployments that applied that fix must upgrade for this issue as well. Users are advised to upgrade to apache-airflow 3.3.1 or later.
Articles & Coverage 2
AnalysisAI
Remote code execution and scheduler-process disruption in Apache Airflow 3.3.0 stems from unguarded deserialization of task instance next_kwargs during the scheduler's unconditional awaiting_input sweep, a code path introduced as part of the 3.3.0 human-in-the-loop task rewrite. Any authenticated DAG author who can influence task state through the task execution API can supply a crafted payload that causes arbitrary module import and object instantiation inside the scheduler process, or terminate the scheduler job entirely. No public exploit has been identified at time of analysis, but a vendor-released patch exists in 3.3.1; deployments that previously patched CVE-2026-58076 are still vulnerable through this distinct code path and must upgrade.
Technical ContextAI
Apache Airflow 3.3.0 refactored human-in-the-loop (HIL) task handling by moving deferred tasks from the triggerer component to a new awaiting_input task state managed by the scheduler. The scheduler job runner's check_awaiting_input_timeouts method now sweeps this state every 15 seconds and passes each task instance's next_kwargs field to airflow.sdk.serde.deserialize, with a fallback to BaseSerialization.deserialize, without any class allow-list enforcement. This is the root of CWE-502 (Deserialization of Untrusted Data): the allowed_deserialization_classes configuration guard that protects other Airflow deserialization paths does not cover this sweep code path at all. DAG authors control the next_kwargs value through the task execution API, making the scheduler's own sweep process the attack surface. The GitHub PR #70685 fix introduces _decode_next_kwargs, a wrapper function that isolates deserialization failures and routes unresumable task instances to a controlled failure state rather than allowing the scheduler to process an unbounded or malicious payload. CPE cpe:2.3:a:apache_software_foundation:apache_airflow:*:*:*:*:*:*:*:* with version range 3.3.0 to before 3.3.1 identifies the exact affected window; versions before 3.3.0 are explicitly not affected because HIL tasks used the triggerer code path, which does not share this deserialization gap.
RemediationAI
Vendor-released patch: apache-airflow 3.3.1. Upgrade to 3.3.1 or later as directed by the Apache Software Foundation advisory at https://lists.apache.org/thread/vygr0fh82cjzjp5k4vtfmboxryvm3lyn; the code fix is implemented in PR #70685 (https://github.com/apache/airflow/pull/70685). If an immediate upgrade is operationally blocked, restrict DAG authoring permissions to the minimum required set of fully trusted internal users, since a DAG author role is the prerequisite for supplying a malicious next_kwargs value. Blocking external access to the task execution API at the network perimeter reduces the attack surface to internal principals only, but does not eliminate the threat from insider or compromised accounts. Applying the patch for CVE-2026-58076 alone is explicitly insufficient - this is a distinct scheduler code path confirmed by the vendor advisory, and 3.3.1 is required to address both issues.
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
Unsafe XCom templating in Apache Airflow's documented example DAG (`example_xcom.py`) allowed an authenticated UI user w
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
Same weakness CWE-502 – Deserialization of Untrusted Data
View allSame technique Deserialization
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-57275
GHSA-q4c3-7575-55j2