Description
Apache Airflow's serialization layer reconstructed exception nodes by calling `import_string()` on a class name taken from the serialized blob and instantiating it with arguments from the same blob, with no restriction on what could be imported. An operator's `executor_config` reaches that branch, so a Dag author could place a value there that causes an arbitrary callable to be imported and invoked -- for example `subprocess.check_output`, or `builtins.eval` on the `builtins`-prefixed variant. The code runs in the **Scheduler**, which reconstructs serialized Dags in its normal loop with no request involved, and in the **API server**, on any authenticated read of the Dag such as `GET /api/v2/dags/{dag_id}/details`. Both are components the Airflow security model states must never execute Dag-author code, and both hold the metadata database credentials and the JWT signing secret. No non-default configuration is required. This is a **different sink from CVE-2026-33264**, which covered only the trigger branch of the same deserializer: deployments that upgraded in response to that advisory are still affected through the exception branch and must upgrade again. Users are advised to upgrade to apache-airflow 3.3.1 or later, which restricts the imported class to a subclass of `BaseException`.
Published: 2026-08-12
Score: 8.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

An Airflow operator’s executor_config field is processed by the deserialization layer by calling import_string() on a class name extracted from serialized data without validating the imported type. This allows a DAG author to inject an arbitrary callable, such as subprocess.check_output or builtins.eval, leading to execution of code on the system that hosts the Airflow Scheduler or API server. The weakness is identified as CWE‑502, describing deserialization of untrusted data. The exploit can compromise confidentiality, integrity, and availability of the underlying host because it gives the attacker full code execution rights.

Affected Systems

Apache Software Foundation’s Apache Airflow is affected. All releases that do not contain the 3.3.1 onward fix are vulnerable, including the current 3.2.x series and any intermediate releases. The vulnerability is triggered through the standard DAG serialization mechanism and does not require any custom or non‑default configuration to be present.

Risk and Exploitability

The CVSS score of 8.8 indicates high severity, and coupled with its presence in the core deserialization logic, it poses a serious risk. The vulnerability exists in the Scheduler’s background loop and the authenticated API endpoint, meaning it can be triggered simply by creating or modifying a DAG; no special network access beyond normal DAG author privileges is needed. The risk remains considerable because the code runs internally with database credentials and a JWT signing secret, providing the attacker with potent system resources. The EPSS score of less than 1% suggests low but non‑zero exploitation probability, and although the vulnerability is not listed in the CISA KEV catalog, it remains acute until the software is updated.

Generated by OpenCVE AI on August 14, 2026 at 20:45 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to Apache Airflow 3.3.1 or later, which limits the import to subclasses of BaseException.
  • If an upgrade is not immediately possible, patch the deserialization code to validate that the imported class inherits from BaseException before instantiation, or temporarily remove the executor_config field from DAG definitions so the vulnerable path is not exercised.
  • Re‑configure Airflow RBAC so that only trusted roles can create or modify DAGs; enforce read‑only DAG directories for untrusted users to prevent malicious DAG uploads.

Generated by OpenCVE AI on August 14, 2026 at 20:45 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 18 Aug 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Fri, 14 Aug 2026 19:30:00 +0000

Type Values Removed Values Added
CPEs cpe:2.3:a:apache:airflow:*:*:*:*:*:*:*:*
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Wed, 12 Aug 2026 18:15:00 +0000

Type Values Removed Values Added
First Time appeared Apache
Apache airflow
Vendors & Products Apache
Apache airflow

Wed, 12 Aug 2026 16:00:00 +0000

Type Values Removed Values Added
Description Apache Airflow's serialization layer reconstructed exception nodes by calling `import_string()` on a class name taken from the serialized blob and instantiating it with arguments from the same blob, with no restriction on what could be imported. An operator's `executor_config` reaches that branch, so a Dag author could place a value there that causes an arbitrary callable to be imported and invoked -- for example `subprocess.check_output`, or `builtins.eval` on the `builtins`-prefixed variant. The code runs in the **Scheduler**, which reconstructs serialized Dags in its normal loop with no request involved, and in the **API server**, on any authenticated read of the Dag such as `GET /api/v2/dags/{dag_id}/details`. Both are components the Airflow security model states must never execute Dag-author code, and both hold the metadata database credentials and the JWT signing secret. No non-default configuration is required. This is a **different sink from CVE-2026-33264**, which covered only the trigger branch of the same deserializer: deployments that upgraded in response to that advisory are still affected through the exception branch and must upgrade again. Users are advised to upgrade to apache-airflow 3.3.1 or later, which restricts the imported class to a subclass of `BaseException`.
Title Apache Airflow: Unguarded import_string() of airflow_exc_ser / base_exc_ser exception nodes in BaseSerialization.deserialize enables DAG-author RCE on Scheduler / API Server
Weaknesses CWE-502
References

cve-icon MITRE

Status: PUBLISHED

Assigner: apache

Published:

Updated: 2026-08-18T19:53:31.027Z

Reserved: 2026-06-28T15:16:00.339Z

Link: CVE-2026-58076

cve-icon Vulnrichment

Updated: 2026-08-18T13:43:35.076Z

cve-icon NVD

Status : Modified

Published: 2026-08-12T16:17:08.317

Modified: 2026-08-18T20:17:19.317

Link: CVE-2026-58076

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-14T21:00:05Z

Weaknesses
  • CWE-502

    Deserialization of Untrusted Data