CVE-2026-41490 Dagster Vulnerable to SQL Injection via Dynamic Partition Keys in Database I/O Manager Integrations
Attackers with dynamic partition permissions can inject SQL into Dagster database integrations, enabling arbitrary code execution and data manipulation.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-41490?
CVE-2026-41490 is a high-severity SQL injection vulnerability in dagster-io dagster, published on 7 May 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official description
Dagster is an orchestration platform for the development, production, and observation of data assets. Prior to Dagster Core version 1.13.1 and prior to Dagster libraries version 0.29.1, the DuckDB, Snowflake, BigQuery, and DeltaLake I/O managers constructed SQL WHERE clauses by interpolating dynamic partition key values into queries without escaping. A user with the Add Dynamic Partitions permission could create a partition key that injects arbitrary SQL, which would execute against the target database backend under the I/O manager's credentials. Only deployments that use dynamic partitions are affected. Pipelines using static or time-window partitions are not impacted. This issue has been patched in Dagster Core version 1.13.1 and Dagster libraries version 0.29.1.
Weakness: CWE-89
Which versions are affected by CVE-2026-41490?
18 open source packages ship an affected version, including dagster, dagster-deltalake and dagster-duckdb.
| Package | Affected | Fixed in |
|---|---|---|
dagster PyPI | All versions | 1.13.1 |
dagster PyPI | All versions | 1.13.1 |
dagster PyPI | All versions | 1.13.1 |
dagster-deltalake PyPI | All versions | 0.29.1 |
dagster-deltalake PyPI | All versions | 0.29.1 |
dagster-deltalake PyPI | All versions | 0.29.1 |
12 more packages
dagster-duckdb PyPI | All versions | 0.29.1 |
dagster-duckdb PyPI | All versions | 0.29.1 |
dagster-duckdb PyPI | All versions | 0.29.1 |
dagster-gcp PyPI | All versions | 0.29.1 |
dagster-gcp PyPI | All versions | 0.29.1 |
dagster-gcp PyPI | All versions | 0.29.1 |
dagster-snowflake PyPI | All versions | 0.29.1 |
dagster-snowflake PyPI | All versions | 0.29.1 |
dagster-snowflake PyPI | All versions | 0.29.1 |
dagster-snowflake-polars PyPI | All versions | 0.29.1 |
dagster-snowflake-polars PyPI | All versions | 0.29.1 |
dagster-snowflake-polars PyPI | All versions | 0.29.1 |
How do I fix CVE-2026-41490?
Upgrade dagster to 1.13.1 or later.
Use parameterised queries everywhere and never build SQL by joining strings. Upgrade affected software first; a web application firewall only buys time. More about SQL injection.
Is CVE-2026-41490 being exploited?
There is no known exploitation of CVE-2026-41490 in the wild and no public exploit code.
Public exploit code: 1 proofs of concept on GitHub.
Sources
Also known as GHSA-mjw2-v2hm-wj34, PYSEC-2026-2432, PYSEC-2026-2433, PYSEC-2026-2434, PYSEC-2026-2435, PYSEC-2026-2436 and 1 more.