SQL注入漏洞分析与修复
发现了一个影响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语句中。虽然平台设置了基本过滤以阻止常见攻击载荷,但成功绕过了这些检查,使用了基于时间的盲注SQL注入技术。
以下概念验证(PoC)载荷导致服务器响应出现故意延迟五秒,确认了存在基于时间的SQL注入漏洞:
?sort=(SELECT 1371 FROM PG_SLEEP(5))
另一个示例:
?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字符串构造。应用层过滤不足以阻止逻辑注入链,并且未能使用预处理语句或查询参数化。
修复建议
该漏洞已由相关方解决,建议用户更新到最新版本,并验证和转义所有用户提供的输入,同时使用带有绑定变量的预处理语句。
时间线
- 发现日期:2025-09-15
- 通知厂商:2025-09-19
- CVE分配:2025-11-28
- 公开披露:2025-12-18
致谢
此漏洞由Timothy Stamopoulos在一次客户服务中发现。