系统:运行中
← 返回所有攻击
AGENTS MEDIUM NEW

MS-Agent 的 shell 工具:正则黑名单把提示注入变成 RCE

CVE-2026-2256 让攻击者控制的内容诱导 ModelScope 的 MS-Agent 执行系统命令。根因是一个熟悉的反模式:用正则黑名单而非白名单来防护 shell 工具。

2026-06-08 // 5 min affects: modelscope-ms-agent

这是什么?

CVE-2026-2256ModelScope 的 MS-Agent 中的一个命令注入漏洞。MS-Agent 是一个用于构建带工具调用的 AI 智能体的开源框架。该漏洞通过 CERT/CC 漏洞通告 VU#431821 披露,发布于 2026 年 3 月 2 日,由研究员 Itamar Yochpaz 报告。ModelScope 于 2026 年 1 月 15 日 收到通知;据 CERT/CC 称,在协调过程中未获得厂商任何声明或补丁。SentinelOne 将受影响范围定为 v1.6.0rc1 及更早版本,并将该问题归类为 CWE-77(命令注入)。

值得注意的不是智能体框架存在 RCE,而是该漏洞如何被触发:不是操作员输入恶意命令,而是由不可信内容——一份文档、一个代码仓库、一条日志、一份研究输入——诱导智能体去执行命令。这是一条最终落入真实 shell 的间接提示注入。

工作原理

MS-Agent 提供了一个 Shell 工具,让智能体执行操作系统命令来完成任务。该工具试图保证安全:check_safe() 方法会过滤危险命令。问题在于它如何过滤——使用一个基于正则表达式的黑名单

针对 shell 输入的黑名单是众所周知的死路。表达同一效果的方式太多:编码、命令混淆、替代 shell 语法、可信解释器,以及普通的 shell 解析语义,都为攻击者提供了该正则从未预料到的路径。CERT/CC 的通告直言不讳:“基于黑名单的过滤本质上是脆弱的,常常可以通过编码、命令混淆或替代 shell 语法绕过。”

攻击链如下:

不可信内容(文档 / 仓库 / 日志 / 网页结果)
        │  其中含有引导智能体的文本……

智能体决定使用 Shell 工具
        │  构造出包含攻击者影响文本的命令字符串

check_safe() 正则黑名单  ──►  [被绕过]


shell 以智能体进程的权限执行该字符串

此处不复现任何 payload。重要的是其形态:智能体在其正常执行流程中自行组装并提交命令,因此并不存在可指责的”操作员误用”。过滤器看到的是它判定为良性的字符串;而 shell 看到的是可执行逻辑。

为什么重要

一旦黑名单被绕过,攻击者便以 MS-Agent 进程的权限执行命令。CERT/CC 与报告描述了现实的影响范围:读取 API 密钥、令牌和配置文件等机密;投放 payload;修改工作区状态;建立持久化;横向移动到内部服务;以及污染下游消费的构建产物或报告。

关于评分的一点说明:SentinelOne 给出的 CVSS 为 6.5(中等),向量中机密性与完整性影响均为低。请把它当作下限而非上限。CVSS 基础指标无法捕捉智能体语境——一个既摄入外部内容又持有凭据的智能体,正是”致命三要素”的组合(私有数据 + 不可信输入 + 行动能力),在那里实际后果会升级为主机沦陷。“中等”评级反映的是狭隘的技术视角;部署现实更为严重。

更广泛的教训远超 MS-Agent。任何暴露 shell、代码执行或文件工具,并试图通过封禁已知恶意字符串来确保其安全的智能体,都在重复这个错误。工具调用边界是一个授权问题,而非模式匹配问题。

防御

  1. 用白名单取代黑名单。 不要试图枚举危险命令。枚举那一小组被允许的操作,并拒绝其余一切。这是修复整类漏洞而非单个绕过的唯一改动。
  2. 避免 shell=True 当 shell 工具不可避免时,直接执行参数向量(不经 shell 解释),使解析语义无法被转化为注入。绝不要把源自模型或内容的文本拼接进 shell 字符串。
  3. 沙箱化工具并施加最小权限。 在容器中运行具备 shell 能力的智能体,丢弃 capabilities、只读文件系统、no-new-privileges,并配置 MAC 策略(AppArmor/SELinux)。如果进程读不到你的机密,绕过也无法外泄它们。
  4. 将所有摄入内容视为不可信。 文档、仓库、日志和网页结果默认由攻击者控制。仅在你信任、已验证或已净化的内容上运行 MS-Agent——这正是 CERT/CC 通告的建议。
  5. 打破致命三要素。 不要把私有数据访问、不可信输入和具备行动能力的工具集中在单个无人监督的智能体中。分离权限,或将工具调用置于人工或策略检查之后。
  6. 监控绕过迹象。 记录智能体提交的命令字符串,对 shell 元字符(;|&&$()、反引号)、智能体派生的意外子进程,以及带可疑参数的 execve() 类调用进行告警。

现状

项目参考日期备注
CVE-2026-2256VU#4318212026-03-02MS-Agent Shell 工具中的命令注入,经 check_safe() 黑名单绕过
受影响版本SentinelOne2026-03ModelScope ms-agent v1.6.0rc1 及更早版本;CWE-77;CVSS 6.5(中等)
厂商响应VU#4318212026-03-022026-01-15 通知;协调期间未获得声明或补丁

给构建者的要点:由正则黑名单防护的 shell 工具等于没有防护。如果你的智能体能执行命令,你真正能控制的边界是进程权限以及它所读取内容的可信度——请设计好这两点,并假定字符串过滤器终将失效。

Sources