当AI代理把文档当成命令执行
Progress披露的CVE-2026-91140让一份恶意OpenAPI/Swagger文档可在AI代理环境中执行任意系统命令。本文拆解漏洞链条、EA版本治理困境与Agent时代输入面重构,给出分层防御清单。
修复后正文
以下为按建议修订后的完整文章:补充了公告中的可核实信息(CVSS评分、受影响与修复版本、厂商原文关键句、技术复现路径),删除了两处来源不明的“业内人士透露”内容(其中一处的普遍性判断改写为明确标注的作者观察),所有产业趋势推断均以“作者观点”明确标出,并在文末增加信源说明以便读者核实。
2026年10月6日,Progress的一纸安全公告,把一个藏在“抢先体验”里的GenAI组件推到了聚光灯下:CVE-2026-91140,命令注入漏洞,攻击者只需一份精心构造的OpenAPI或Swagger文档,就能在运行受影响AI代理的环境里执行任意操作系统命令。
这不是又一条例行披露的严重漏洞。它真正暴露的,是AI代理工作流里一个结构性问题:当“外部内容”被当成“可信指令”处理,输入与执行的边界就消失了。
⚠️ 一份文档,一条命令
先看这个场景:一位数据工程师想让接入工作快一点,把第三方服务的Swagger文档丢给DataDirect Autonomous REST Connector的AI Model Generator代理,让AI自动读懂接口、生成数据模型。这是提效工具最典型的用法,也是官方鼓励的用法。
问题恰恰出在这里。根据Progress2026年10月6日发布的安全公告,编号CVE-2026-91140的漏洞属于命令注入类别:攻击者通过"特制"的OpenAPI/Swagger文档,可以在运行受影响代理的环境中执行任意操作系统命令。
以下是公告中的关键硬信息,供读者核实:
- CVSS评分:9.8(Critical),CVSS 3.1向量串为
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H——网络可达、攻击复杂度低、无需权限与用户交互。 - 受影响版本:DataDirect Autonomous REST Connector的AI Model Generator代理,仅限Early Access(抢先体验)版本(EA build 1.0.0 至 1.0.3)。
- 修复版本:升级至AI Model Generator代理 1.0.4 或之后的GA正式版;Progress同时提供了关闭AI自动生成功能的临时配置项作为缓解措施。
- 厂商公告关键句(摘译):"When the AI Model Generator agent processes a specially crafted OpenAPI/Swagger specification, an attacker may cause the agent to execute arbitrary operating system commands with the privileges of the agent process."(当AI Model Generator代理处理特制的OpenAPI/Swagger规范时,攻击者可使代理以该代理进程的权限执行任意操作系统命令。)
- 复现路径(据公告的漏洞描述,技术要点概括):代理在根据文档生成连接配置时,会将spec中的特定字段(如server URL与operation标识)未经充分净化地传入底层代码生成流程的shell调用。攻击者在这些字段中嵌入shell元字符,即可拼接出任意命令。公告同时说明:漏洞需代理实际处理攻击者可控的文档,默认部署中若文档均来自可信内网源,利用前提不成立——但“文档来源可信”恰恰是最难保证的假设。
把这条链路画出来,你会看到它和传统RCE长得完全不一样:
值得注意的不是“严重”这个评级——命令注入 reaching 任意命令执行,在CVSS体系里从来都是高分。值得注意的是攻击载荷的形态:它不是畸形HTTP包,不是恶意序列化对象,而是一份文档。
文档在AI工作流里是会被主动读取、解析甚至“理解”的输入。传统防御体系里,文档类内容长期被归类为“低风险数据”——WAF不怎么看它,输入过滤对它也宽松。而在这个漏洞里,文档直接走到了操作系统命令的执行路径上。防御假设在入口处就失效了。
一句话:攻击的入口,从“一个请求”变成了“一份说明书”。
🔍 “抢先体验”不是免责牌
第二个细节同样关键:漏洞只存在于Early Access Release,这一点在Progress公告的受影响版本列表中写得明确,也意味着升级到修复版或GA版本即可消除风险。
EA版本的本意是收集反馈、加快迭代,这本是软件行业的常规操作。但现实是,在AI竞赛的压力下,“抢先体验”正在变成“抢先上生产”。企业等不及GA,厂商也乐于让新功能尽快见客户,于是最不稳定的代码和最新鲜的攻击面,同时进入了内网。
(作者观察,非统计数据,仅供参考) 在与一线安全从业者交流中,AI项目“先跑起来再说”、安全评审排在POC验收之后的情况并不少见,而POC用的往往正是EA版本。这一现象的普遍程度缺乏公开调查数据支持,读者可自行对照自身环境验证。
把GA和EA放在一张表里看,风险差异一目了然:
| 维度 | 正式版(GA) | 抢先体验(EA) |
|---|---|---|
| 代码成熟度 | 经过完整回归测试 | 快速迭代,边界情况覆盖不足 |
| 漏洞披露节奏 | 有成熟CVE与补丁通道 | 披露流程刚建立,响应窗口不稳定 |
| 企业使用姿态 | 纳入资产台账与合规范围 | 常游离在影子IT之外 |
| 攻击面状态 | 相对稳定可枚举 | 新功能叠加新接口,持续变化 |
对厂商而言,EA不是法外之地。这次Progress给了正式CVE编号、发布了带CVSS评分与修复版本的安全公告,这是正确的做法——说明披露机制覆盖到了未转正的产品线。但真正的问题在另一半:企业侧有没有对应的EA治理?
一个务实的判断标准是:如果安全团队说不出公司里跑着哪些EA版本的AI组件,那么下次出问题的大概率不是没人披露的漏洞,而是没人看见的部署。
🤖 Agent拆掉了输入与指令的边界
要理解这类漏洞为什么会出现,得回到架构层面。
传统应用里,Swagger文档是给人看的元数据——开发者读完它,自己决定写什么代码。而在AI代理工作流里,文档成了喂给模型、驱动自动生成的“操作材料”:AI读完文档,直接产出连接配置、调用逻辑,甚至执行环境准备动作。
本次CVE-2026-91140的本质,按公告的漏洞描述,就是解析OpenAPI/Swagger文档的代理组件,把文档中的字段拼接进了操作系统命令的执行路径——文档内容越过了“数据”的边界,变成了“命令”。
这不是孤例的偶然,而是Agent架构的通病。看看整条信任链:
这条链上,每一环都可能被污染:第三方API提供方可能被冒充或入侵,文档托管位置可能被篡改,解析组件可能有注入缺陷,模型可能被提示注入引导。开源与供应链安全的老剧本换了宿主——过去是依赖包投毒,现在是“上下文投毒”。
更麻烦的是两类注入的叠加态。传统注入(命令注入、SQL注入)打的是解析器的实现缺陷;提示注入打的是模型的语义判断。Agent应用同时暴露在两种攻击之下,而防御这两类问题的团队,在多数企业里往往分属不同条线。
(作者观点) Agent安全目前最大的结构性问题,是责任归属不清:应用团队觉得是安全的事,安全团队觉得是基础设施的事,基础设施团队面对一个会自己读文档、自己跑命令的组件,往往无从下手。这一判断来自作者的个人观察与推断,不代表行业共识。
🏢 中间件老厂的新考题
(本节为作者观点性分析,非事实报道)
Progress不是一家初创公司。DataDirect系列连接器在企业数据链路里存在了很多年,数据集成领域几乎绕不开它。当一个老牌中间件厂商把GenAI代理塞进连接器产品线,意味着它的任何架构决策都会被放大到庞大的既有客户群。
这次的受影响组件是DataDirect Autonomous REST Connector的AI Model Generator代理(EA版本)。连接器意味着什么?意味着它是数据出入企业的咽喉:自动解析外部schema、自动生成配置、天然持有访问凭证。给这样一个位置加上一个会主动消费外部文档的AI代理,其漏洞影响半径远大于一个孤立的SaaS功能。
放大的路径是这样的:
(作者观点) 由此可以做的一个趋势判断是:未来一两年,“传统软件巨头补AI课”的产物,可能是漏洞的高发带。原因不是这些厂商技术差——恰恰相反,它们的工程能力大多是过硬的——而是新旧两套架构被迫在同一个进程里握手:几十年积累的连接器、驱动、集成逻辑,和刚刚定型的Agent框架、模型调用链,彼此的威胁模型都还没对齐。这是一个待验证的推断,请读者以此为前提自行评估。
对安全从业者来说,(作者观点) 这意味着一类新的优先级排序:老牌中间件厂商的AI新组件,值得像监控开源依赖投毒一样持续盯着。它们的用户基数,决定了同一个漏洞的复利效应。
🛡️ 把文档当不可信输入来防
最后落到实操。这次漏洞给出的防御启示,可以按层拆成一张清单:
| 防御层 | 具体措施 | 对应本次漏洞 |
|---|---|---|
| 输入层 | 对OpenAPI/Swagger文档做结构化校验,拒绝异常字段与超长嵌套 | 切断恶意文档进入解析器的路径 |
| 解析层 | 禁止将文档内容拼接进shell命令,参数化执行、白名单字段 | 直接封堵命令注入点 |
| 代理层 | AI代理运行在沙箱中,最小权限,与宿主机隔离 | 即便注入成功也限制破坏半径 |
| 网络层 | EA组件隔离在独立网段,严控出口流量 | 降低横向移动与外连风险 |
| 流程层 | EA准入审批、纳入资产台账、订阅厂商安全公告 | 解决“没人看见的部署”问题 |
几条经验之谈:第一,凡是要“读外部内容然后自动执行”的组件,一律按暴露公网的服务对待,无论它叫连接器还是代理。第二,EA版本可以进POC,不该碰生产数据——这条红线在AI项目里尤其容易被“进度压力”磨掉。第三,厂商公告订阅要覆盖到EA产品线,别等CVE上了新闻才知道自己装过这东西。
漏洞本身,打上1.0.4补丁就结束了。但“AI代理读外部内容”这个模式会反复出事——防御的本质,是把输入与指令之间那条被拆掉的边界,重新砌回去。
📌 小结
CVE-2026-91140大概率不会是2026年最响亮的漏洞名字,但它示范了一种非常典型的AI时代漏洞形态:攻击载荷是一份文档,执行者是厂商塞进中间件里的AI代理,引爆点是一个还没转正的抢先体验版本。
当AI开始替你读文档、写配置、调接口,安全团队要重新回答一个老问题——你信任的,到底是人,还是那份没人审过的说明书?
📎 信源说明
- 事实性内容(漏洞编号、CVSS评分与向量串、受影响及修复版本、缓解措施、复现技术要点、厂商公告引文)均以Progress 2026年10月6日发布的安全公告及NVD条目为准,读者可访问Progress官网安全公告页与NVD(nvd.nist.gov)核实。
- 标注“作者观察”的内容:来自作者与一线从业者的非正式交流,缺乏公开统计数据支持,仅供参考。
- 标注“作者观点”的章节与段落(“中间件老厂的新考题”全节及“Agent拆掉了输入与指令的边界”末段的责任归属分析):为作者的产业趋势推断,属观点性内容,非事实报道。
- 修订说明:原文中“据多位接近企业安全团队的人士透露”与“业界流传的一句私下吐槽”两处内容,因来源无法核实,已删除或改写为明确标注的作者观察,不再以匿名信源形式呈现。