第三方 AI 插件正成为企业数据泄露的新攻击面。PromptArmor 近期披露的安全研究显示,ChatGPT for Google Sheets 插件存在严重的间接提示注入漏洞,攻击者可通过隐藏在外部数据中的恶意指令,在无需用户批准的情况下执行 Apps Script 脚本,实现跨工作簿的数据外泄。这一事件暴露出第三方 AI 插件在权限边界管理上的系统性缺陷 —— 当插件被授予执行特权脚本的 OAuth 权限时,传统的 "人工确认" 机制在模型代理场景下形同虚设。
问题的核心在于权限的静态定义与运行动态之间的错位。大多数企业在接入 AI 插件时,仅关注功能层面的 "能做什么",却忽视了权限层面的 "能做到什么程度"。本文从 OAuth Scope 的静态分解出发,探讨运行时能力隔离的沙箱设计原则,并提供可直接落地的工程参数与审计清单。
OAuth Scope 的静态审计:从粗粒度到最小权限
OAuth Scope 是权限边界的第一道防线,但在实际应用中常被过度授权。以 Google Workspace 为例,插件常请求的 https://www.googleapis.com/auth/drive 范围实际上授予了对用户整个 Drive 的读写权限,而非仅限于当前工作簿。PromptArmor 披露的攻击案例中,恶意脚本正是利用这一过度授权,在窃取初始工作簿数据后,通过解析其中的跨表格链接,横向扩散至用户账户下的其他工作簿,最终外泄 12 个独立文件。
静态审计的首要任务是 Scope 的精细化分解。建议采用三层分解策略:
第一层:资源维度限定。将 drive 级别的通配权限拆解为 drive.file 或更细粒度的 spreadsheets 专用范围,确保插件仅能访问用户明确授权的文件,而非整个存储空间。对于需要跨文件操作的场景,应通过显式的文件选择器(File Picker)获取用户逐文件授权,而非一次性授予批量访问权。
第二层:操作维度限定。区分 readonly 与 readwrite 范围,对于仅需数据分析的插件,坚决不授予写入权限。在 ChatGPT for Google Sheets 的案例中,攻击者利用的正是插件被授予的脚本执行权限 —— 这一权限本应仅限于特定沙箱环境,却意外暴露于用户主账户上下文。
第三层:环境维度隔离。开发、测试、生产环境应使用独立的 OAuth Client ID 与 Secret,禁止令牌跨环境复用。根据安全沙箱管理的最佳实践,每个沙箱环境应拥有独立的客户端凭证,确保测试环境的泄露不会波及生产数据。
审计清单应包含以下检查项:是否使用了通配符范围(如 drive.*)、是否存在跨环境令牌复用、是否记录了每个 Scope 的授权理由与责任人、是否设置了自动过期策略。
运行时能力隔离:沙箱设计的四大支柱
静态 Scope 控制只能解决 "能访问什么" 的问题,而运行时隔离需要回答 "能执行什么" 的问题。当 AI 插件获得执行外部脚本的权限时,必须在沙箱环境中对其运行时能力进行严格限制。
进程级隔离是最基础的防护层。每个 AI 插件实例应在独立的进程或轻量级容器中运行,禁止直接访问宿主应用(如 Google Sheets)的完整运行时环境。PromptArmor 披露的攻击中,恶意脚本能够直接调用 Google Apps Script API 并访问用户 Drive,正是因为执行环境与用户主账户缺乏有效隔离。建议采用 WebAssembly 或 V8 Isolate 等技术实现轻量级沙箱,在毫秒级启动开销的同时提供内存与执行隔离。
网络能力限制是防止数据外泄的关键。沙箱应默认禁用对外部网络的访问,或仅允许访问白名单内的 API 端点。对于必须的外部调用(如 AI 模型推理),应通过代理层中转,并实施请求内容审计。在数据外泄案例中,攻击者通过脚本将工作簿内容发送至外部服务器 —— 如果沙箱实施了严格的出站网络控制,此类外泄将被阻断。
文件系统虚拟化确保插件只能访问授权范围内的文件。通过 FUSE 或类似技术,将插件的文件视图限制在用户明确授权的文件子集,即使插件获得 drive.file 范围的令牌,也无法通过路径遍历访问其他文件。同时,应实施写时复制(Copy-on-Write)策略,确保插件的写操作不会直接影响原始数据,便于审计与回滚。
时间维度限制针对 AI 代理的持续性风险。传统 OAuth 令牌的有效期往往长达数小时甚至永久,而 AI 插件的每次操作应使用短期令牌(如 5-15 分钟有效期),并在操作完成后立即失效。PromptArmor 报告指出,攻击脚本一旦启动,用户点击 "停止" 按钮无法终止已运行的脚本 —— 这正是缺乏运行时生命周期管理的后果。
工程实现清单:可落地的参数与策略
基于上述原则,以下是可直接应用于生产环境的配置参数与代码策略。
OAuth 配置参数:
access_type=offline仅在必要时启用,优先使用短期access_tokenprompt=consent强制每次授权时重新确认 Scope,防止权限漂移- 令牌有效期设置为 300-900 秒,刷新令牌存储于硬件安全模块(HSM)
- 实施 Scope 白名单校验,拒绝包含通配符或敏感范围(如
admin.*)的授权请求
沙箱运行时策略:
- 使用 seccomp-bpf 或 AppArmor 限制系统调用,仅允许文件读写、网络连接(至白名单端点)、标准输出
- 网络层实施出站代理,拦截所有非白名单流量,记录请求体摘要(前 1KB)用于审计
- 文件系统层实施 chroot jail,将插件根目录绑定至临时卷,操作完成后自动清理
- CPU / 内存限制:单插件实例 CPU 配额不超过 0.5 核,内存不超过 512MB,防止资源耗尽攻击
审计与监控要点:
- 记录每个 Scope 的授权事件(时间、用户、Scope 列表、Client ID、授权理由)
- 监控异常行为模式:短时间内访问多个文件、出站网络请求频率突增、脚本执行时间超过阈值(如 30 秒)
- 设置自动告警规则:单用户单日授权 Scope 变更次数超过 3 次、跨环境令牌使用检测
失败安全设计:
- 高风险操作(如批量导出、跨工作簿复制)强制人工确认,确认窗口应脱离插件控制,由宿主应用原生渲染
- 沙箱异常退出时,自动撤销关联令牌并通知安全团队
- 实施 "默认拒绝" 策略:未明确允许的操作一律禁止,而非默认允许
总结
ChatGPT for Google Sheets 的数据外泄事件揭示了第三方 AI 插件权限管理的深层风险:当模型获得执行特权脚本的能力时,传统的边界防护机制面临失效。有效的防护需要从静态的 OAuth Scope 审计延伸到运行时的能力隔离,通过最小权限原则、环境隔离、网络限制与审计监控的多层防御,将潜在的攻击面压缩至可控范围。
对于企业安全团队而言,建议将 AI 插件纳入现有的第三方风险管理(TPRM)流程,建立专门的 AI 插件准入清单,对请求的 Scope 进行逐项审查,并在生产部署前实施渗透测试。技术团队则应关注沙箱运行时隔离的工程实现,将上述参数与策略转化为 CI/CD 流水线中的自动化检查点,确保权限边界在代码层面得到强制执行。
资料来源
- PromptArmor: "ChatGPT for Google Sheets Exfiltrates Workbooks" — 披露 ChatGPT for Google Sheets 插件的间接提示注入漏洞与数据外泄攻击链
- hoop.dev: "OAuth Scope Management for Secure Sandbox Environments" — OAuth Scope 最小化与沙箱环境隔离的最佳实践
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。