CVE-2026-58076 Apache Airflow exception-node deserialization permits arbitrary callable execution
A DAG author can achieve remote code execution on the Scheduler or API server by exploiting unguarded import_string calls during exception deserialization.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-58076?
CVE-2026-58076 is a high-severity unsafe deserialization vulnerability in Apache Airflow, published on 12 Aug 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official 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`.
Weakness: CWE-502
Which versions are affected by CVE-2026-58076?
4 open source packages ship an affected version, including apache-airflow and airflow. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
apache-airflow PyPI | From 3.3.0 | 3.3.1 |
apache-airflow PyPI | From 3.3.0 | 3.3.1 |
apache-airflow PyPI | From 3.3.0 | 3.3.1 |
airflow Bitnami | From 3.3.0 | 3.3.1 |
Products include Apache Airflow.
How do I fix CVE-2026-58076?
Upgrade apache-airflow to 3.3.1 or later.
Upgrade, and only deserialise data from trusted sources or with an allow-list of types. More about Unsafe deserialization.
Is CVE-2026-58076 being exploited?
There is no known exploitation of CVE-2026-58076 in the wild and no public exploit code.
Other vulnerabilities in Apache Airflow
- CVE-2020-13927 Apache Airflow's Experimental API Authentication Bypass
- CVE-2020-11978 Apache Airflow Command Injection
- CVE-2026-33264 Apache Airflow: DAG author RCE on webserver via unrestricted import_string() in BaseSerialization.deserialize()
- CVE-2023-25754 Apache Airflow: Privilege escalation using airflow logs
- CVE-2023-22884 Apache Airflow, Apache Airflow MySQL Provider: Arbitrary file read via MySQL provider in Apache Airflow
Sources
Also known as BIT-airflow-2026-58076, GHSA-8prw-8m6x-8w6f, MINI-92m7-f8j7-mm39, PYSEC-2026-3991.