CVE-2026-41490Dagster是一个数据资产的开发、生产和观察的编排平台。在Dagster Core 1.13.1版本及Dagster库0.29.1版本之前,DuckDB、Snowflake、BigQuery和DeltaLake的I/O管理器在构建SQL WHERE子句时,通过插值动态分区键值到查询中,且未进行转义。拥有“添加动态分区”权限的用户可以创建包含任意SQL注入的分区键,该SQL将在I/O管理器的凭据下对目标数据库后端执行。此问题仅影响使用动态分区的部署,使用静态或时间窗口分区的管道不受影响。
该漏洞的根本原因在于Dagster的特定I/O管理器(如DuckDB、Snowflake、BigQuery和DeltaLake)在处理动态分区时,未能正确过滤用户输入。当系统构建数据库查询语句(特别是WHERE子句)时,直接将用户提供的动态分区键值拼接到SQL查询中,而不是使用参数化查询或进行适当的转义。攻击者需要拥有“添加动态分区”的权限。一旦具备该权限,攻击者可以精心构造一个恶意的分区键,其中包含SQL注入载荷(如 ' OR 1=1 -- 或其他数据库特定的指令)。当Dagster尝试读取或写入该分区的数据时,这些恶意代码会被传递到底层数据库执行。由于执行权限属于I/O管理器的连接凭据,这可能导致数据泄露、数据篡改,甚至在某些情况下导致数据库拒绝服务。仅使用静态分区或时间窗口分区的系统不受此漏洞影响,因为它们不涉及这种动态字符串拼接操作。