Orkes Conductor SQL注入漏洞分析 (CVE-2025-66387)

26 阅读2分钟

Orkes Conductor SQL注入漏洞分析:CVE-2025-66387

该研究发现了一个存在于Orkes Conductor平台(版本5.2.4 | v1.19.12)中的漏洞,该漏洞允许已认证的攻击者对后端PostgreSQL数据库执行基于时间的盲注SQL注入攻击。

Orkes Conductor是一个用于编排复杂、分布式微服务和人工工作流的管理平台。该漏洞源于对/api/workflow/search端点的“sort”参数缺乏适当的输入验证,使得攻击者能够将精心构造的SQL表达式直接注入到后端查询中。

受影响的产品

  • 产品: Orkes Conductor
  • 版本: 5.2.4 (平台版本 v1.19.12)
  • 受影响的组件: /api/workflow/search
  • 数据库: PostgreSQL
  • CVE ID: CVE-2025-66387

漏洞细节

受影响的端点接收用户控制的“sort”查询参数输入,该参数未经适当清理便直接嵌入到后端执行的SQL语句中。虽然平台设置了基本的过滤机制来阻止常见的攻击载荷,但研究人员成功利用基于时间的盲注技术绕过了这些检查。

以下概念验证(PoC)载荷导致服务器响应出现故意的5秒延迟,证实了存在基于时间的SQL注入漏洞:

?sort=(SELECT 1371 FROM PG_SLEEP(5))

图1. PoC请求导致服务器响应延迟五秒。

另一个示例:

?sort=(SELECT 1 + CASE WHEN (SELECT ASCII(SUBSTRING(datname,1,1)) FROM pg_database LIMIT 1 OFFSET 0) = 112 THEN PG_SLEEP(5) ELSE 0 END)

此载荷用于判断数据库名称的第一个字符是否匹配特定的ASCII值(例如,112 = ‘p’),如果匹配则触发可测量的时间延迟,从而实现逐字符的数据提取。

利用此技术,可以枚举数据库名称、表名和列元数据。

影响

成功利用此漏洞,远程的已认证攻击者能够提取内部PostgreSQL数据库的名称和内容。根据部署和数据库配置情况,攻击者可能获取到机密的应用数据或已编排的工作流状态信息。

根本原因

问题的核心在于动态查询排序逻辑中未对SQL字符串构造进行清理。应用层的过滤不足以阻止逻辑注入链,并且未能使用预编译语句或查询参数化。

修复建议

该漏洞已被Orkes修复,建议用户更新到最新版本,并验证和转义所有用户提供的输入,同时使用带有绑定变量的预编译语句。

时间线

  • 发现日期: 2025-09-15
  • 通知厂商: 2025-09-19
  • 分配CVE: 2025-11-28
  • 公开披露: 2025-12-18

致谢

该漏洞由Timothy Stamopoulos在一次客户项目中代表某机构发现。