CVE-2026-86843: Apache Airflow Teradata provider: SQL injection via unvalidated Dag Params in the compute-cluster example Dag
The Apache Airflow Teradata provider's compute-cluster example Dag declared every one of its Dag Params as unconstrained free text and templated them straight into the compute-cluster operators, which interpolate those values into Teradata DDL. A user who is permitted to trigger that Dag - a lower-trust role than the Dag author, and one that needs no Teradata credentials of its own - could therefore supply SQL fragments that execute under the connection the task runs as, and could additionally redirect the task at any other connection defined in the deployment, because the connection id was itself a free-text Param. Only deployments that run this example Dag, or a Dag copied from it, are affected; the provider's operator code is unchanged. Users of apache-airflow-providers-teradata are recommended to upgrade to version 3.7.0 or later, whose example constrains the Params to validated identifiers and a closed value set and removes connection selection and free-form option strings from trigger-time input. Upgrading does not change a Dag already copied from the example; users who copied it should apply the same constraints to their copy.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
apache-airflow-providers-teradatato a version that resolves this vulnerability.Fixed in 3.7.0 - Configuration
For any Dag copied from the example, constrain all Dag Params to validated identifiers and a closed value set, and remove connection selection and free-form option strings from trigger-time input.
Teradata compute-cluster example Dag Dag Params = validated identifiers and a closed value set
Event History
Frequently Asked Questions
Which deployments are affected?
Only deployments that run the compute-cluster example Dag, or a Dag copied from that example, are affected. The Teradata provider operator code itself is unchanged.
What access does an attacker need?
An attacker needs permission to trigger the affected Dag. They do not need their own Teradata credentials, because injected SQL executes using the connection configured for the task.
Can an attacker use a different configured Teradata connection?
Yes. In the affected example, the connection ID is a free-text Dag Param, allowing a user who can trigger the Dag to redirect it to another connection defined in the deployment.
What should we do if we copied the example Dag?
Upgrade to apache-airflow-providers-teradata 3.7.0 or later, then update the copied Dag separately. The upgrade does not modify existing copies; apply validated identifier constraints, use closed value sets, and remove trigger-time connection selection and free-form option strings.