{"id":6144,"date":"2026-09-04T18:48:21","date_gmt":"2026-09-04T10:48:21","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-58076"},"modified":"2026-09-04T18:48:21","modified_gmt":"2026-09-04T10:48:21","slug":"cve-2026-58076","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-58076","title":{"rendered":"CVE-2026-58076 [HIGH] &#8211; Apache Airflow&#8217;s serialization layer reconstructed exception nodes by calling `import_stri"},"content":{"rendered":"<p>Apache Airflow&#8217;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&#8217;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 &#8212; 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`.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apache Airflow&#8217;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, w<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6144","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}