flawopen.com/AI Security/progress-arcgenai-generator-command-injection-cve-2026-91140
●
CVE-2026-91140 · CVSS 9.6 · 严重
安全研究 · FlawOpen
CVE-2026-91140:Progress ARCGenAI-Generator 命令注入
开发者运行 ARCGenAI-Generator 2.0 时,特制的 Swagger/OpenAPI 文档可影响基于 shell 的临时文件清理流程。Progress 在 2.1 中修复了该流程;公告未报告正在发生的利用。[1], [3], [4]
💡 通俗易懂的原理解析 (ELI5)
清理指令会从前一步接收文件名,再将它传给操作系统。如果文件名被当作 shell 指令的一部分而非普通文本,清理过程就可能执行意外命令。修复方法是在可能时避开 shell,并严格限制和引用必须传入 shell 的文件名。[1], [2]
核心概念与专有名词
ARCGenAI-Generator- Progress DataDirect 工具,可从 Swagger/OpenAPI 输入生成 REST 连接器产物。受影响版本为 2.0;Progress 指定 2.1 已修复。[1], [3]
CWE-78- 操作系统命令中特殊元素未得到正确中和;
CVE-2026-91140被分配此分类。[4]
框架映射
- 本指南所述弱点的 CWE 参考: CWE-78
攻击执行流程分解
步骤 1
步骤 2
步骤 3
清理指令进入 shell
修复前公开的 agent 指令通过终端清理临时文件,并将 {fileName} 插入路径表达式。修复提交指出该值由 orchestrator 提供;引用来源并未证明它源自该文档。[2]
步骤 4
源代码对比:漏洞与安全实现
易受攻击面板引用了 Progress 修复前的 agent 指令。修复面板概述了提交 7ede6d9 的指令变更:优先使用原生文件操作、按 allowlist 校验名称,并在必须回退到 shell 时为每次展开加引号。片段省略了可执行清理命令和利用输入。[2]
存在漏洞的实现
# Progress 修复前:代理用于清理临时文件的指令
After successful assembly, delete temp files using the terminal with shell-native commands.
Use retry logic to handle transient file locks.
加固后的安全修复
# Progress 修复:尽可能使用原生文件操作
Prefer your file-editing tool's native delete/remove capability over the terminal.
Removing temp files is a plain file-system operation — it does not need a shell.
# 如果必须回退到 shell,请使用 ^[A-Za-z0-9._-]+$ 验证 {fileName}
# 并在特定平台的清理指令中为每个展开值加引号。
工程与系统安全加固清单
- ✓盘点 ARCGenAI-Generator 安装、代码库副本以及开发或 CI 工作区;核实产品本身版本,而不只是上层连接器版本。[1], [3]
- ✓升级 ARCGenAI-Generator 至 2.1 或更高版本。升级前不要用 2.0 处理不可信 Swagger/OpenAPI 文档。[1], [3]
- ✓检查修复后的
.github/agents/ARCGenAI-Generator.agent.md指令:优先使用原生文件操作,{fileName}必须通过 allowlist 校验,shell 展开必须加引号。[2] - ✓FlawOpen 建议: 在生成、清理和校验全过程中将 API 规范及 schema 派生名称视为不可信输入;没有明确控制时,不要假设 AI agent 会自动隔离数据与命令。
- ✓FlawOpen 建议: 以最小权限运行开发工具;条件允许时,将文档生成与源码仓库、签名材料、云凭据和生产密钥隔离。
- ✓FlawOpen 建议: 为文件名 allowlist 和不调用 shell 的清理选择添加非破坏性回归测试;仅使用无害名称和临时测试夹具。
- ✓FlawOpen 建议: 对于曾在开发或 CI 工作区中使用 ARCGenAI-Generator 2.0 处理不可信文档的情况,检查这些运行期间可用的进程和文件遥测。遥测缺失是保证能力的缺口,不是系统已被攻陷或安全的证据。