Apache Airflow example Dag allows shell injection via IPv6 zone (CVE-2026-101031)
The example_dag_decorator Dag places IPv6 zone identifiers into shell commands when triggered with load_examples enabled.
Shell command injection in Apache Airflow example_dag_decorator Dag
The example_dag_decorator DAG shipped with Apache Airflow, when load_examples is enabled, places an IP address from an HTTP response into a shell command. The ipaddress module accepts IPv6 zone identifiers with arbitrary characters, allowing a user who triggers the DAG via a custom URL to inject shell commands executed on the worker. Example DAG users are affected and can gain remote code execution on workers.
What to do: Upgrade to Apache Airflow 3.4.0 or later. Disable example Dags by setting load_examples=False.
| Product | Affected | Fixed in |
|---|---|---|
| apache airflow | — | 3.4.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
The `example_dag_decorator` example Dag shipped with Apache Airflow validated an IP address fetched over HTTP with Python's `ipaddress` module and then placed it into a shell command. `ipaddress` accepts IPv6 zone identifiers containing arbitrary characters, so when example Dags are loaded (`load_examples` enabled), a user who can trigger that Dag with a custom `url` parameter could point it at a server whose response injects shell commands run on the worker. This is an incomplete fix for CVE-2025-54941; users who upgraded for CVE-2025-54941 should upgrade again. Users are advised to upgrade to apache-airflow 3.4.0 or later, or to disable example Dags (`load_examples = False`), which is recommended for production.
The example_dag_decorator Dag places IPv6 zone identifiers into shell commands when triggered with load_examples enabled.
Today 1.6K readers · 2.5K views · 778 reads · all time 189K views