Apache Airflow Task SDK Callback deserialization can import arbitrary modules in the scheduler
High severity
GitHub Reviewed
Published
Aug 12, 2026
to the GitHub Advisory Database
•
Updated Oct 2, 2026
Description
Published by the National Vulnerability Database
Aug 12, 2026
Published to the GitHub Advisory Database
Aug 12, 2026
Reviewed
Oct 2, 2026
Last updated
Oct 2, 2026
Apache Airflow's Task SDK rebuilt a
Callbackobject from serialized data by re-running its constructor, which imports the module named by the stored callback path. BecauseSyncCallbackis itself an Airflow class it passes the defaultallowed_deserialization_classesallow-list, so tightening that setting does not help. A Dag author — who controls a task instance'snext_kwargsthrough the task execution API — can therefore cause an arbitrary module to be imported inside the scheduler process, when the scheduler'sawaiting_inputtimeout sweep deserializes that value. No non-default configuration is required; the sweep runs unconditionally. Versions before 3.3.0 are not affected: the class existed, but the scheduler sweep that reaches it did not. This is a separate code path from CVE-2026-58076 and CVE-2026-67260, which cover different gadgets reaching deserialization — applying either of those fixes does not address this one. Users are advised to upgrade to apache-airflow 3.3.1 or later.References