pusidun
← All posts

Agent 插件与 Skill 供应链安全

Agent 产品一旦支持插件、Skill 或 MCP Server,就进入了供应链安全领域。

插件能扩展能力,也能扩大攻击面。尤其是 Coding Agent 场景,插件可能拥有文件读写、命令执行、网络访问、上下文读取等能力。如果缺少权限边界,插件就会变成安全短板。

一、Agent 插件为什么危险

传统插件通常只扩展 UI 或特定功能,而 Agent 插件往往会参与决策和执行。

它可能:

  • 读取用户输入和模型上下文
  • 向模型返回工具结果
  • 访问本地文件
  • 执行脚本
  • 连接远程服务
  • 安装额外依赖
  • 调用系统命令

这意味着插件不只是“代码扩展”,还是 Agent 行为链路的一部分。

一个恶意插件可以不直接攻击系统,而是通过工具结果诱导模型下一步执行危险动作。

二、常见插件形态

Agent 生态里的扩展通常包括:

  • IDE 插件
  • 本地脚本
  • npm 包
  • Python 包
  • MCP Server
  • Skill 目录
  • 浏览器自动化扩展
  • 企业内部工具连接器

不同形态风险不同,但安全目标一致:

  • 来源可信
  • 权限可控
  • 行为可审计
  • 更新可验证
  • 出事可追溯和禁用

三、供应链攻击路径

1. 恶意安装脚本

很多包管理器支持安装脚本,例如 npm 的 postinstall。

攻击路径:

  1. 用户安装插件
  2. 插件安装依赖
  3. 依赖执行 postinstall
  4. 脚本读取 .env 或 SSH Key
  5. 数据被上传

缓解方式:

  • 安装脚本默认沙箱执行
  • 安装前展示脚本风险
  • 企业策略禁用未知插件安装脚本
  • 锁定依赖版本和 hash

2. 插件权限声明不实

插件 manifest 声明只读项目文件,实际却访问用户目录。

缓解方式:

  • manifest 声明权限
  • 运行时按权限强制隔离
  • 权限超范围直接阻断
  • 审计插件实际行为

3. 插件更新被劫持

插件首次安装安全,但后续版本被污染。

缓解方式:

  • 插件签名
  • 版本固定
  • 更新包校验
  • 灰度更新
  • 企业管理员审批升级

4. Tool Injection

插件返回结果中包含恶意提示,诱导 Agent 执行下一步危险动作。

缓解方式:

  • 插件输出标记为不可信数据
  • 模型上下文中区分指令和数据
  • 工具执行前做独立策略判断
  • 高危动作仍需审批

四、插件权限 manifest

一个插件至少应该声明:

  • 插件名称和版本
  • 作者和来源
  • 签名信息
  • 文件权限
  • 网络权限
  • 命令执行权限
  • 是否读取上下文
  • 是否访问凭证
  • 是否调用其他插件

示例:

{
  "name": "code-review-helper",
  "version": "1.2.0",
  "publisher": "example",
  "permissions": {
    "filesystem": {
      "read": ["workspace"],
      "write": []
    },
    "network": {
      "connect": ["api.example.com"]
    },
    "process": {
      "execute": []
    },
    "context": {
      "readConversation": false,
      "readToolResults": true
    },
    "secrets": {
      "read": false
    }
  }
}

manifest 不是声明完就结束,关键是运行时要强制执行。

五、插件安全审核

插件进入市场前,可以做几类审核:

  1. 静态扫描
  2. 依赖漏洞扫描
  3. Secret 扫描
  4. 高危 API 扫描
  5. 安装脚本检查
  6. 动态行为沙箱
  7. 人工审核高权限插件

高危 API 包括:

  • 文件系统递归读取
  • 子进程执行
  • 网络请求
  • 动态代码加载
  • 环境变量读取
  • 凭证存储访问
  • 加密和压缩组合行为

单独出现不一定危险,但组合起来要提高风险等级。

例如“读取 .env + 压缩 + 上传未知域名”就是明显高危行为链。

六、插件运行时隔离

插件隔离可以按成熟度分阶段建设。

第一阶段:产品层隔离

  • 插件调用统一经过代理
  • 限制文件路径
  • 限制网络域名
  • 限制命令执行
  • 记录审计日志

第二阶段:进程隔离

  • 插件独立进程运行
  • 主进程和插件通过 RPC 通信
  • 限制环境变量
  • 插件崩溃不影响主程序

第三阶段:系统级沙箱

  • Windows AppContainer 或 Job Object
  • macOS App Sandbox
  • 容器化执行
  • 网络代理和文件系统虚拟化

工程上可以先做第一阶段,因为最容易落地,也能覆盖大部分高风险行为。

七、企业治理

企业版 Agent 插件安全还需要治理能力:

  • 插件白名单
  • 插件黑名单
  • 插件版本锁定
  • 禁止个人安装未知插件
  • 高权限插件审批
  • 插件行为审计
  • 安全事件一键禁用插件
  • 企业内部插件仓库

这类能力很重要,因为企业终端不是单机环境,而是成百上千台设备的统一风险面。

八、Roadmap 中的位置

在 AI 终端安全 Roadmap 里,插件和 Skill 供应链安全是生态扩展阶段必须补上的能力:

我会把 Agent 插件看成供应链和运行时安全问题。插件安装前做来源、签名、依赖和安装脚本检查;安装后通过 manifest 声明权限,并由运行时强制限制文件、网络、命令、上下文和凭证访问;插件输出默认视为不可信数据,防止 Tool Injection;企业侧支持白名单、版本锁定、审计和紧急禁用。

这样才能把插件安全从单纯的代码扫描,提升到完整的生态治理体系。