
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-67587 is a deserialization vulnerability in Apache Airflow's Task SDK that enables DAG authors to trigger arbitrary module imports inside the scheduler process, leading to remote code execution with scheduler privileges. It affects Apache Airflow version 3.3.0 only — versions before 3.3.0 are not affected because the scheduler sweep that reaches the vulnerable code path did not exist, and version 3.3.1 contains the fix. The vulnerability was disclosed on August 12, 2026, and carries a CVSS v3.1 base score of 8.8 (High) (Apache Advisory, GitHub Advisory).
The root cause (CWE-502: Deserialization of Untrusted Data) lies in how the Task SDK reconstructs a Callback object from serialized data: it re-runs the constructor, which calls Callback.get_callback_path() and imports the module named by the stored dotted-path string. Because SyncCallback is itself an Airflow class, it passes the default allowed_deserialization_classes allow-list, making that configuration control ineffective. A DAG author — who has write access to a task instance's next_kwargs via the task execution API — can store an arbitrary module path in serialized form; when the scheduler's awaiting_input timeout sweep runs (unconditionally, with no special configuration required), it deserializes the value and imports the attacker-controlled module, executing its module-level code inside the scheduler process. The fix (PR #70704) carries the path read from serialized data in a private str subclass and returns it unchanged rather than re-resolving it, eliminating the unnecessary import (GitHub PR, GitHub Advisory).
Successful exploitation grants a DAG author remote code execution within the scheduler process, which typically runs with elevated privileges and has broad access to the Airflow metadata database, DAG configurations, connections, and secrets. This can result in full confidentiality, integrity, and availability compromise of the scheduler and any resources it can reach, including potential lateral movement to connected systems via stored Airflow connections or credentials (GitHub Advisory, Apache Advisory).
No public proof-of-concept exploit code is known to exist, and there is no evidence of in-the-wild exploitation at the time of disclosure. The EPSS score is approximately 0.305% (0.003050), placing it in the 35th percentile for exploitation likelihood within 30 days. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog. Exploitation requires low privileges (DAG author access with task execution API write capability), but no user interaction or non-default configuration (GitHub Advisory, Apache Advisory).
malicious_package.payload) that, when imported, executes attacker-controlled code at module level (e.g., a reverse shell or data exfiltration routine).next_kwargs: Use the task execution API to set a task instance's next_kwargs to include a serialized SyncCallback (or compatible Callback) object whose stored callback path points to the malicious module. Because SyncCallback is an Airflow class, it bypasses the allowed_deserialization_classes allow-list check.awaiting_input timeout sweep runs unconditionally and deserializes the stored Callback object, re-running its constructor and importing the attacker-specified module path inside the scheduler process.ImportError log entries or successful import log messages in the Airflow scheduler log referencing unusual or external module paths; scheduler log entries showing deserialization activity for SyncCallback or Callback objects with non-standard dotted paths.bash, python, curl, wget, or network utilities); unexpected outbound network connections originating from the scheduler process.site-packages or DAG directories that contain executable module-level code; new files created by the scheduler process user in sensitive directories.awaiting_input timeout sweep interval.Upgrade Apache Airflow to version 3.3.1 or later, which resolves the issue by no longer importing the stored module path when reconstructing a Callback from serialized data (Apache Advisory, GitHub PR). As a temporary workaround if immediate patching is not possible, restrict DAG author access to the task execution API and limit which users can control task instance next_kwargs. Note that tightening allowed_deserialization_classes does not mitigate this vulnerability, and fixes for the related CVE-2026-58076 and CVE-2026-67260 do not address this separate code path (GitHub Advisory).
The vulnerability was reported by Apache Airflow maintainer Jarek Potiuk (potiuk), who also authored the fix PR. The advisory explicitly notes this is a distinct code path from two other recently disclosed Airflow deserialization issues (CVE-2026-58076 and CVE-2026-67260), signaling a broader pattern of deserialization gadget discovery in Airflow's Task SDK. The NixOS security tracker opened an issue tracking Apache Airflow security issues below 3.3.1, reflecting community awareness of the cluster of related vulnerabilities (GitHub PR, Apache Advisory).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."