DTStack Taier命令注入漏洞CVE-2026-9437
DTStack Taier(太阿)啊袋鼠云开源的分布式可视化 DAG 任务调度系统,面向大数据 ETL 与工作流编排,Apache 协议、免费商用。
一、基本情况
DTStack Taier 是开源大数据开发平台,用于任务提交、调度、运维和指标展示,可以帮助企业快速搭建稳定、高效的数据处理流水线。

DTStack Taier 是一款一站式大数据任务开发、调度、运维平台,解决任务依赖复杂、调度不稳、运维难等问题,降低大数据开发门槛。
栋科技漏洞库关注到 DTStack Taier 相关版本中存在的命令注入漏洞,该漏洞现在已经被追踪为CVE-2026-9437,CVSS3.X评分为9.8。
二、漏洞分析
CVE-2026-9437漏洞是 DTStack Taier 平台中存在的一个通过 SQL 文本的存储型注入远程代码执行漏洞,该漏洞的潜在安全风险极高。
该漏洞源于用户传入的 SQL 文本存入 MySQL 数据库后,未经过滤处理便交由 Runtime.exec () 执行。
攻击者可通过 sqlText 参数注入系统命令,该参数经由接口传入、数据库存储,最终触发命令执行,详细分析如下:
相关版本REST API接收sqlText参数后,ScriptService.dealScriptStandAloneParams()将其直接传递给 ScriptUtil.buildShellCommand(),
该方法将 sqlText 内容写入 shell 脚本文件后拼接为 "sh <scriptPath>" 命令。
ScriptJob.run() 方法通过 Runtime.getRuntime().exec(new String[]{"sh", "-c", shellFullCommand}) 执行该命令,
由于 sqlText 未经任何过滤或转义,攻击者可通过 shell 元字符(;、|、&、$( )、``等)注入任意 OS 命令,实现远程代码执行。
三、POC概念验证
(一)数据流向
应用程序接口(sqlText)→ MySQL 数据库存储 → Runtime.exec ("sh -c <sqlText>")
写入流程(接口至数据库)
接口接收用户传入的 sqlText 参数
该 SQL 文本通过 MyBatis 映射器存入数据库,未做过滤处理
仅进行数据类型校验,未对 sqlText 内容做安全检测
读取流程(数据库至命令执行)
从数据库读取已存储的 sqlText 内容
内容拼接前缀 "sh -c" 后传入 Runtime.exec () 执行
若内容中存在攻击者构造的特殊字符,将触发操作系统命令注入
(二)攻击方式
方式一:存储型注入
攻击者通过接口提交包含 Shell 命令注入语句(例如;rm -rf /)的 SQL 文本。恶意内容存入数据库后,在任务运行时被执行。
方式二:直接执行
sqlText 参数内的 Shell 元字符会被 /bin/sh -c 解析执行。
权限要求
相关接口需身份认证,拥有任务创建权限的任意用户均可利用此漏洞。
(三)漏洞佐证
sqlText 参数从接口传入到交由 Runtime.exec ("sh -c ...") 执行的全流程均未做过滤处理。
数据读写环节未实施输入校验、命令白名单及参数化执行等安全措施。
(四)修复建议
输入校验:按照规范格式校验 SQL 文本,拦截分号、竖线、与号、反引号、$() 等 Shell 特殊字符
参数化执行:使用 ProcessBuilder 传入独立参数列表,而非拼接字符串调用 Runtime.exec ("sh -c" + 输入内容)
命令白名单:仅允许执行预设范围内的命令
最小权限原则:以最低系统权限运行执行进程
四、影响范围
DTStack Taier ≤ 1.4.0
五、修复建议
DTStack Taier > 1.4.0
六、参考链接
管理员已设置登录后刷新可查看