将 STRIDE 框架应用于 AI 智能体:一份面向未来的威胁建模实践指南

摘要:当 Curity CTO Jacob Ideskog 警告行业正"梦游般"陷入 AI 安全危机时,他揭示了一个核心困境:我们缺乏系统性的方法来分析和应对 AI 智能体(Agent)带来的全新"行为驱动"威胁。本文将创新性地引入经典 STRIDE 威胁建模框架,将其作为解剖 AI 智能体安全风险的手术刀,系统地将提示注入、数据泄露等新风险归类到我们熟悉的威胁模型中,并为构建可落地的缓解措施提供清晰的路线图。


引言:为何需要用旧地图探索新世界?

传统的应用安全威胁建模,侧重于分析数据流和代码逻辑中的漏洞。然而,AI 智能体的核心风险源于其与人类语言的交互及其行为的不可预测性。这是否意味着我们过去的经验和框架都已失效?

答案是否定的。经典框架如 STRIDE(由微软提出,包含六大威胁类别)的强大之处在于其高度的抽象性和普适性。我们需要的不是抛弃它,而是学会如何将这些新出现的、看似模糊的威胁,"翻译"成 STRIDE 框架能够理解和描述的语言。

本次实践,我们将以一个典型的 AI 智能体系统为蓝本,走完一次完整的威胁建模流程。

系统蓝图:用户 -> 应用层 -> [AI Agent核心 (包含系统提示)] -> LLM API -> [内部工具/API/数据库]

第一步:将 AI 新威胁映射到 STRIDE 框架

1. S - 仿冒 (Spoofing) - "我是谁?"
  • AI 时代的体现:在传统意义上,仿冒指用户或进程伪装成他人。在 AI 场景下,它表现为攻击者通过操纵智能体,使其仿冒成一个可信的内部服务调用者。当一个被注入恶意提示的智能体去调用内部的用户管理 API 时,该 API 看到的是一个来自"受信任的内部 AI 助手"的合法请求,从而执行了恶意操作。攻击者借用了智能体的"身份"。
2. T - 篡改 (Tampering) - "我的指令被修改了"
  • AI 时代的体现:这是 AI 智能体最核心、最独特的威胁所在。提示注入(Prompt Injection)本质上就是一种针对"动态指令数据"的篡改攻击。在传统应用中,我们担心的是静态数据(如数据库记录)被篡改;而在 AI 系统中,由系统提示、用户输入、历史对话共同构成的上下文(Context),就是智能体正在执行的"动态指令"。攻击者通过输入特定文本,篡改了这个指令集,从而改变了程序的执行逻辑。
3. R - 否认 (Repudiation) - "不是我干的"
  • AI 时代的体现:如果一个智能体在生产环境中执行了破坏性操作(如删除了重要数据),我们能否确凿无疑地追溯到最初下达指令的用户,并且该用户无法否认?如果缺乏对每一次交互------从用户原始输入到智能体最终执行的 API 调用------的完整、不可篡改的日志记录,那么事后的追责和取证将变得极其困难。这就构成了"否认"威胁。
4. I - 信息泄露 (Information Disclosure) - "我不小心说漏嘴了"
  • AI 时代的体现:Ideskog 提到的数据泄露风险可以被完美地归入此类,并且可以细分为两种路径:
  1. 输出端泄露:智能体被巧妙的提示词诱导,在其生成的自然语言回复中,无意间泄露了它有权访问但本不应直接输出的敏感信息。

  2. 模型逆向泄露:如果模型本身是用敏感的内部数据进行微调的,攻击者可能通过持续探测,从模型的响应模式中"逆向工程"出部分训练数据片段,这是一种更隐蔽的信息泄露。

5. D - 拒绝服务 (Denial of Service) - "我太忙了,没空理你"
  • AI 时代的体现:原文中提到的"输入泛滥"或"滥用"可以归为此类。攻击者可以通过提交需要大量计算资源或会触发冗长、复杂工具链调用的请求,来消耗 LLM API 的配额、增加企业运营成本,或者使其集成的内部系统过载,从而实现拒绝服务攻击。
6. E - 权限提升 (Elevation of Privilege) - "我做到了本不该做的事"
  • AI 时代的体现:这是许多攻击的最终目的,也是 "过权的智能体" 风险的直接体现。Cursor IDE 被诱骗执行本地系统命令的例子,就是一次典型的权限提升攻击。原本只能处理文本和代码的 AI 助手,其权限被提升到了可以执行任意系统命令的级别。任何成功的提示注入,如果其结果是让智能体执行了超出其预设功能范围的操作(特别是调用高权限 API),都应被视为一次权限提升。

第二步:基于 STRIDE 分析设计缓解措施

通过 STRIDE 框架的"翻译",我们可以清晰地将原文中分散的防御建议,系统性地组织为针对性的缓解策略。

|-------------|------------------|-----------------------------------------------|
| STRIDE 威胁类别 | 威胁描述(AI 场景) | 核心缓解措施(来自原文) |
| S - 仿冒 | 智能体仿冒身份调用内部服务 | 严格的身份认证(IAM)、基于角色的访问控制(RBAC)、对智能体调用进行细粒度授权 |
| T - 篡改 | 通过提示注入篡改智能体行为 | 提示加固(Prompt Hardening)、强大的输入/输出过滤、对指令和配置的变更控制 |
| R - 否认 | 无法追溯恶意操作的源头 | 全面的运行时可观察性、记录所有交互的详细日志以供审计和取证 |
| I - 信息泄露 | 输出泄露敏感数据、训练数据被逆向 | 严格的输出过滤与内容审查、数据处理管道中的脱敏、谨慎选择用于微调的数据 |
| D - 拒绝服务 | 资源耗尽型请求导致服务不可用 | 对 API 端点进行速率限制、监控资源使用情况、对输入进行复杂度评估 |
| E - 权限提升 | 智能体执行了超越其权限的操作 | 最小权限原则、将外部工具集成限制在沙盒环境中、建立严格的审批工作流、AI 红队演练 |

导出到 Google 表格

结论:用系统性思维驾驭混沌

AI 智能体带来的安全挑战看似混沌无序,但其本质并未完全脱离网络安全的基本范畴。通过运用 STRIDE 这样的经典威胁建模框架,我们能够:

  1. 系统化理解风险:将模糊的"行为"风险,转化为结构化、可分析的威胁类别。

  2. 避免防御盲点:确保我们的防御策略能够全面覆盖各类威胁,而不仅仅是针对最热门的"提示注入"。

  3. 促进有效沟通:使用安全行业通用的语言,与开发、运维和管理团队就 AI 安全风险和应对策略进行高效沟通。

最终,驾驭 AI 安全浪潮的关键,不是发明一套完全割裂的全新理论,而是将我们久经考验的系统性安全思维,创造性地应用于这个激动人心的新领域。