Summary
Ein Angreifer kann mehrere Schwachstellen in Apache Airflow ausnutzen, um beliebigen Programmcode auszuführen, um Informationen offenzulegen, um Dateien zu manipulieren, und um Sicherheitsvorkehrungen zu umgehen.
Product
Apache Airflow ist eine Plattform zur programmatischen Erstellung, Planung und Überwachung von Workflows.
Vulnerabilities 17
-
Critical 9.1
Apache Airflow: BashOperator Jinja2 injection via dag_run.conf — low-privilege user pattern
Apache Airflow's official documentation at `core-concepts/dag-run.html` ("Passing Parameters when triggering Dags") showed a verbatim `BashOperator(bash_command="echo value: {{ dag_run.conf['conf1'] }}")` example without any quoting / sanitization warning. Da…
-
High 8.8
Apache Airflow: Authenticated RCE via XCom PATCH endpoint — XComUpdateBody missing FORBIDDEN_XCOM_KEYS validator
A bug in Apache Airflow's XCom PATCH endpoint `PATCH /api/v2/xcomEntries/{key}` allowed an authenticated UI/API user with XCom write permission on a Dag to set XCom entries under reserved key names (e.g. `return_value`) that the matching POST endpoint already…
-
High 8.8
Apache Airflow: JWT Token Exposure in KubernetesExecutor Command-Line Arguments
A bug in Apache Airflow's KubernetesExecutor caused JWT tokens used by worker pods to authenticate against the Execution API to be passed to the worker container as command-line arguments visible in the pod spec. An authenticated UI/API user with Kubernetes r…
-
High 7.5
Apache Airflow: API authorization bypass: bulk TaskInstances allows cross-DAG mutation
A bug in Apache Airflow's bulk Task Instances API (`PATCH/DELETE /api/v2/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances`) evaluated authorization against the `dag_id` resolved from the URL path while operating on the `dag_id` / `dag_run_id` extracted from r…
-
High 7.3
Apache Airflow: Arbitrary import in custom deadline-reference deserialization
Apache Airflow's scheduler-side deadline-reference decoder (`SerializedCustomReference.deserialize_reference`) imported and dispatched arbitrary class paths drawn from DAG-author-controlled serialized state without an allowlist or plugin-registry gate. A DAG …
-
High 7.2
Apache Airflow: Open Redirect Bypass Vulnerability
A bug in the login redirect route in Apache Airflow allowed authenticated users to craft URLs that bypassed the `is_safe_url` check, enabling redirection from a trusted Airflow domain to an attacker-controlled origin. Users are advised to upgrade to `apache-a…
-
Medium 6.5
Apache Airflow: Arbitrary File Read via Log Symlink following in FileTaskHandler
A Dag author could either (a) create a symlink under their task's log directory pointing to an arbitrary file readable by the API server process (read-path attack — e.g. `/etc/passwd` or `airflow.cfg`) or (b) supply a `task_id` containing `..` sequences accep…
-
Medium 6.5
Apache Airflow: Variable masker depth-limit bypass returns cleartext nested secrets
A bug in Apache Airflow's Variable response masker caused nested-key redaction (triggered by secret-suffixed key names like `password`, `token`, `secret`, `api_key`) to be bypassed when the JSON value's nesting depth exceeded the shared secrets masker's recur…
-
Medium 6.5
Apache Airflow: Rendered template truncation bypasses nested sensitive-key masking
A bug in Apache Airflow's rendered-template field handling caused nested sensitive-key masking (e.g. nested `password` / `token` / `secret` / `api_key` keys inside a JSON template structure) to be bypassed when the rendered field exceeded `[core] max_template…
-
Medium 6.5
Apache Airflow: Incomplete Redaction of Sensitive Fields in Connection Extra API Response
A bug in the GET `/api/v2/connections/{connection_id}` REST API endpoint in Apache Airflow allowed an authenticated UI/API user with Connection-read permission to retrieve secrets stored in a Connection's `extra` JSON blob under field names not present in the…
-
Medium 6.5
Apache Airflow: revoke_token() unreachable in FabAuthManager / KeycloakAuthManager logout path
A bug in Apache Airflow's auth manager logout handling left previously-issued JWT tokens valid after the user clicked logout in the UI: the logout flow for `FabAuthManager` and `KeycloakAuthManager` did not actually reach the underlying `revoke_token()` call,…
-
Medium 5.9
Apache Airflow: JWT cookie missing Secure flag in JWTRefreshMiddleware behind HTTPS-terminating proxy
Apache Airflow's `JWTRefreshMiddleware` set the JWT auth cookie without the `Secure` flag, so deployments running the Airflow API server behind an HTTPS-terminating reverse proxy (e.g. nginx / Envoy / a managed load balancer that terminates TLS and forwards p…
-
Medium 5.9
Apache Airflow: No certificate validation on SMTP STARTTLS connections
Apache Airflow's EmailOperator and the underlying `airflow.utils.email` helpers established SMTP STARTTLS connections without verifying the remote certificate when the deployment used `[email] smtp_starttls=True` without `[email] smtp_ssl`. An attacker positi…
-
Medium 4.3
Apache Airflow: per-DAG RBAC bypass on /ui/partitioned_dag_runs endpoints
The partitioned_dag_runs endpoints in the Airflow UI enforced only asset-level access control, not per-Dag authorization. An authenticated UI/API user with global Asset:read permission could enumerate partition run state, schedule configuration, and asset wir…
-
Medium 4.3
Apache Airflow: Event Log detail endpoint bypasses DAG-scoped event log permission filter
The Event Log detail endpoint `GET /api/v2/eventLogs/{event_log_id}` in Apache Airflow fetched audit-log rows directly by numeric ID after only the generic Audit Log permission check, while the collection endpoint `GET /api/v2/eventLogs` applied per-Dag scopi…
-
Low 3.1
Apache Airflow: DAG authorization bypass on /ui/structure/structure_data
The structure_data endpoint in the Airflow UI returned external dependency graph nodes for linked Dags without checking whether the caller had read permission on those linked Dags. An authenticated UI/API user authorized for one Dag could enumerate linked Dag…
-
Low 3.1
Apache Airflow: Log server JWT authorization bypass via Python lstrip() character stripping allows cross-Dag log access
Exploitation requires the attacker to already be an authenticated Airflow worker holding a valid Log-server JWT issued for at least one Dag. Apache Airflow's Log server authorized JWT tokens against Dag IDs by applying Python's `str.lstrip()` to the requested…
Revision history
-
#2
CVE ergänzt
-
#1
Initiale Fassung
References
-
Apache Mailing List vom 2026-05-31
https://lists.apache.org/thread/7rqvyt7kxgpgmor6r2tq7d3qg383pjz6
-
Apache Mailing List vom 2026-05-31
https://lists.apache.org/thread/dmm4b56k9dxytvypjozgmhh6kjohcnql
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/752
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/751
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/749
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/748
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/764
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/750
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/739
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/741
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/742
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/743
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/744
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/745
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/746
-
Apache Mailing List vom 2026-05-31
https://seclists.org/oss-sec/2026/q2/747
-
Apache AirflowRelease Notes vom 2026-05-31
https://airflow.apache.org/docs/apache-airflow/3.2.2/release_notes.html#airflow-3-2-2-2026-05-29