GitHub Advisoryadvisory · PyPI
GHSA-8prw-8m6x-8w6f Apache Airflow exception-node deserialization permits arbitrary callable execution
HIGH
Official page ↗
- Aliases
- CVE-2026-58076
- Ecosystem
- PyPI
- Packages
- apache-airflow
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- Weaknesses
- CWE-502
- Reviewed
- 2026-10-02
Affected packages
• PyPI apache-airflow: >= 3.3.0, < 3.3.1 → fixed in 3.3.1
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`.
Related
Alias · CVE (1)
- CVE-2026-58076 Apache Airflow's serialization layer reconstructed exception nodes by calling `import_string()` on a class name taken from the serialized… vulnerability
Weakness · CWE (1)
- CWE-502 Deserialization of Untrusted Data weakness
References
- https://nvd.nist.gov/vuln/detail/CVE-2026-58076 advisory
- https://github.com/apache/airflow/pull/68511 web
- https://github.com/apache/airflow/commit/3a08a3d7792335ac9456cd44c92d8de3ae0d6ec1 web
- https://github.com/apache/airflow/commit/560f117525d201ed64327c4185050705339e07b1 web
- https://github.com/apache/airflow package
- https://github.com/apache/airflow/releases/tag/3.3.1 web
- https://github.com/pypa/advisory-database/tree/main/vulns/apache-airflow/PYSEC-2026-3991.yaml web
- https://lists.apache.org/thread/t81p688t15jozxsng8521o60nh2kfsos web
- https://www.cve.org/CVERecord?id=CVE-2026-33264 web