用途
Prompt Injection 是一个 AI/LLM 安全审计技能,用于审计使用 AI 功能、LLM 集成或 AI 智能体的应用,发现提示注入(Prompt Injection)、权限提升和授权绕过等漏洞。提示注入被列为 LLM 集成应用的头号漏洞(OWASP LLM Top 10 中的 LLM01),当不可信输入影响 LLM 遵循的指令时,可能导致其忽略系统提示、泄露机密或执行未授权操作。
该技能与其他技能交叉引用:threat-modeling 用于新 AI 功能的设计期风险建模;owasp-audit 用于 LLM 输出到达浏览器时重叠的 XSS/输出渲染模式;api-audit 用于 LLM 工具和 MCP 服务器暴露的 API 面;ai-risk-management 用于更广泛的治理框架,提示注入是 AI 风险中的安全切片。
主要能力
技能将攻击分为三类:
- 直接注入:攻击者直接向 LLM 提供恶意输入(如聊天输入、由 AI 处理的表单字段)。
- 间接注入:攻击者在 LLM 后续会消费的数据中植入恶意指令(如网页、邮件、文档、数据库记录、工具输出、RAG 分块)。
- 跨权限注入:低权限用户在共享数据中植入注入内容,被高权限用户的 AI 会话消费,从而通过 AI 层提升权限。
审计方法论分为七个步骤:
- 梳理 AI 攻击面:通过 grep 查找 LLM API 调用(openai、anthropic、cohere、replicate、ollama、ChatCompletion、messages.create、generate、complete、langchain、llamaindex、autogen、crewai 等),并识别不明显的 AI 功能(AI 搜索、内容生成、聊天机器人、表单自动填充、审核分类、工作流自动化、MCP 服务器与工具注册)。对每个集成记录系统提示、到达提示的用户输入、外部数据、LLM 可执行的动作、输出的下游用途以及 AI 运行所依据的用户角色/权限上下文。
- 审计提示词构造:检查未净化插值、缺少输入/输出边界、系统提示中的机密等模式。
- 审计输出处理:检查 LLM 响应是否被渲染为 HTML(导致 XSS)、作为代码执行(eval/exec)、用于数据库查询或传递给另一个 LLM(链式注入)。
- 审计工具/函数调用与 AI 智能体:包括工具清单与参数验证、破坏性工具门控、人工介入;智能体特有风险如无界循环、智能体记忆投毒、多智能体委派、智能体自我修改、MCP 服务器安全、代码执行沙箱。
- 检查提示词泄露:测试系统提示是否可被提取,包括常见提取尝试和编码技巧。
- 审计 AI 权限边界:检查混淆代理问题、通过 AI 的权限提升、多租户数据泄露、跨权限注入,并提供权限检查清单。
- 评估防御层:检查输入验证、提示分隔符、输出验证、工具调用验证、权限分离、用户范围 AI 查询、智能体循环限制、智能体记忆隔离、MCP 服务器认证、速率限制、监控日志、人工介入等防御措施。
使用方式
该技能以审计工作流形式使用,对用户提供或指向的代码进行审计,为每个发现提供防御性修复建议。输出格式为提示注入审计报告,包含 LLM 集成映射表、按严重级别排列的发现(含文件路径、类别、描述、攻击场景、漏洞代码、修复方案)、防御评估表和优先级修复清单。
适用场景
- 对使用 AI 功能、LLM 集成或 AI 智能体的应用进行安全审计。
- 新 AI 功能上线前的安全评估。
- 授权红队或 CTF 场景下的测试。
限制
- 仅审计用户提供或指向的代码。
- 为每个发现提供防御性修复。
- 未经明确授权,不得为针对生产系统使用而构造实际攻击载荷。
- 在 CTF 或授权红队场景下,构造测试载荷是合适的。
- 拒绝为未授权用途构建提示注入攻击工具的请求。
参考
- OWASP Top 10 for LLM Applications(LLM01: Prompt Injection、LLM08: Excessive Agency)
- NIST AI Risk Management Framework (AI 100-1)
- Anthropic prompt injection mitigations documentation
- Simon Willison 的提示注入研究
- MITRE ATLAS
- Model Context Protocol 规范(安全考量)