Caloogy 文章
English

AI 红队:怎么系统地测一个模型或 Agent

日期
2026 年 2 月 20 日
系列
提示词注入
阅读
4 分钟
主题
AiRed teamEvaluationOwasp llm

一句话版本

传统软件的安全测试,输入是确定的,结果也是确定的。AI 系统不一样:同一个攻击,这次失败,下次可能成功;换个说法、换种语言,结果又不同。所以 AI 红队测试需要大量、多样、可重复的测试用例,用成功率而不是"通过 / 不通过"来衡量。 一个实用的 AI 红队流程是:按 OWASP LLM Top 10 等框架列出风险 → 为每类风险准备测试集 → 自动化批量运行并统计成功率 → 人工深挖 → 修复后回归测试。

全文分三层:

  1. 通俗理解:考试不能只出一道题
  2. 实际用处:OWASP LLM Top 10、开源工具、公开基准
  3. 原理与工程要点:测什么、怎么判分、怎样构造测试环境

第一层:通俗理解

1.1 考试不能只出一道题

测试一个人会不会被骗,不能只试一种骗术。要试:

AI 也一样。而且 AI 的回答带有随机性,所以要用统计的眼光看结果:一个攻击 100 次里成功 3 次,就是一个真实的风险。

1.2 测模型 vs 测应用

测什么 关注
模型 能不能被越狱、会不会输出有害内容、有没有偏见
应用 / Agent 能不能被注入、会不会泄露数据、会不会执行越权操作、工具调用是否安全

大多数开发者用的是别人的模型,应该重点测自己的应用。


第二层:实际用处

2.1 OWASP Top 10 for LLM Applications(2025 版要点)

编号 风险
LLM01 提示词注入
LLM02 敏感信息泄露
LLM03 供应链(模型、数据、插件)
LLM04 数据与模型投毒
LLM05 不当的输出处理(如直接渲染 HTML、执行模型生成的代码)
LLM06 过度代理(给了 Agent 太多权限)
LLM07 系统提示词泄露
LLM08 向量与嵌入的弱点(RAG 相关)
LLM09 错误信息
LLM10 无限制的资源消耗

它是一个很好的测试清单起点。

2.2 开源工具和基准

名称 用途
PyRIT(微软) 自动化红队框架,可以用一个模型去攻击另一个模型
garak(NVIDIA) 大模型漏洞扫描器,内置多种攻击探针
promptfoo 提示词和应用的测试框架,支持红队插件
AgentDojo(苏黎世联邦理工学院) 针对工具调用 Agent 的提示词注入基准
Gandalf(Lakera) 一个提示词注入闯关游戏,很适合入门理解

第三层:原理与工程要点

3.1 测什么:按应用场景列用例

场景 测试用例举例
系统提示词保护 诱导模型复述、翻译、总结它的系统提示词
直接注入 用户输入中要求"忽略之前的指示"
间接注入 在应用会读取的网页、文档、邮件、工具返回结果中埋入指令(见《间接提示词注入》)
数据外泄 诱导输出带数据的图片或链接;诱导调用联网工具(见《Markdown图片数据外泄》)
越权操作 诱导 Agent 调用不该调用的工具、访问其他用户的数据
不当输出处理 让模型输出脚本、SQL、命令,检查下游是否直接执行
资源消耗 诱导无限循环调用工具、生成超长输出
多轮攻击 分多轮逐步引导,每轮看起来都正常

每类用例要多样化:不同语言、不同措辞、不同编码、藏在不同位置。

3.2 怎么判分

方法 适用 注意
确定性检查 有没有调用某个工具、测试服务器有没有收到请求、输出里有没有某个"金丝雀"字符串 最可靠,优先使用
规则匹配 输出是否包含系统提示词的片段 容易漏判
模型评分 用另一个模型判断输出是否"有害"或"偏离任务" 方便但不完全可靠,要人工抽检

一个实用技巧:在系统提示词、私密文档里放一个独特的金丝雀字符串(比如一个随机 UUID),只要它出现在输出、日志或测试服务器上,就说明发生了泄露。

3.3 测试环境

3.4 自动化 + 人工

自动化 人工
大量已知攻击模式的回归测试,每次改提示词、换模型都跑 发现新的攻击思路;组合多个弱点;评估真实影响
用攻击模型自动生成变体 判断模型评分的误判

3.5 报告应该写什么


总结

层次 要点
特点 结果有随机性,要用大量多样的用例和成功率衡量
框架 OWASP LLM Top 10;PyRIT、garak、promptfoo、AgentDojo
判分 优先确定性检查和金丝雀字符串;模型评分要人工抽检
环境 模拟工具、记录服务器、多次采样、版本记录