PIMiner:用"Agent 对 Agent"智能体系统自动做提示注入红队测试
- 关联论文:2608.05108
- 作者:flyP
- 更新:2026-08-07
一句话结论
PIMiner 把"提示注入红队测试"从 RL 训练的端到端攻击器改成"在多个 (数据集, 目标 LLM) 上迭代积累策略库"的智能体系统,最终用每个样本仅 ~10 次查询就拿下 GPT-5.1 / Gemini-2.5-Pro / Claude-Sonnet-4.5 三类目标上的高 ASR,并且策略库对新目标 LLM 可直接迁移。
它要解决的真问题
LLM agent 已经在浏览器、办公、代码、工具调用场景铺开,但只要系统提示或工具返回里夹一段"忽略之前的指令……",agent 就会跑偏。论文把这叫 prompt injection (PI)。防线建设的前提是有便宜、覆盖面广的攻击器。现有 SOTA 主要用 RL 训一个攻击模型,问题有两个:
- 换个目标 LLM 要重训或大量适配;
- 单样本查询预算偏高,不利于大规模评估和安全训练数据采集。
PIMiner 的目标不是某个新攻击 prompt,而是一套能把"对一组目标模型累积下来的策略"零成本搬到下一个未见目标上的流程。
核心方法
PIMiner 的整体形态是一个智能体系统,由四个主要部件耦合而成:
- 策略库 (Strategy Library):以 (数据集, 目标模型) 配对训练出的可复用经验,由自然语言描述的攻击模式 + 元数据索引组成。
- 检索式攻击规划器:给定新样本,从策略库中检索最相关的若干条目,组合出本轮的攻击方案。
- 执行 / 反馈循环:把方案作为新一轮对话注入候选,向目标 agent 发 query 并观察行为。
- 成功判定 + 库更新:命中即把新策略入库;失败则分析失败原因,决定是否替换/补充检索集合再试。
这种设计的两个关键工程点:
- 训练阶段按"序列化的 (数据集, 目标模型) 对"展开,不是单次训练就收敛,这给了策略库"在不同防御强度、不同模型家族"的覆盖度。
- 测试阶段不需要再训练,策略库 = 一个外部 memory,迁移到未见过目标 LLM 是直接检索 + 组合。
伪代码示意(保留论文主流程,省略细节):
def piminer_attack(sample, target_agent, lib):
plan = plan_with_lib(sample, lib) # 检索相关策略 -> 组合攻击方案
n = 0
while n < MAX_QUERIES: # 论文: 每个样本仅约 10 次
payload = plan.next_payload() # 可结合反馈微调
resp = target_agent.run(payload)
if is_success(sample, resp): # 任务级判定, 非字符串匹配
lib.record_success(payload, plan, target_agent.id)
return Success(payload)
plan.refine(resp)
n += 1
return Failure()
测试时 lib 是训练阶段累积得到的库,对新目标 target_agent 不动分毫。
关键实验与数据
论文在两个 agent 安全评测上报告 ASR (Attack Success Rate):
IPIArena
| 目标 LLM | ASR |
|---|---|
| Gemini-2.5-Pro | 76.2% |
| GPT-5.1 | 61.9% |
| Claude-Sonnet-4.5 | 42.9% |
AgentDoJo
| 目标 LLM | ASR |
|---|---|
| Gemini-2.5-Pro | 86.7% |
| GPT-5.1 | 53.3% |
| Claude-Sonnet-4.5 | 40.0% |
预算方面:每个测试样本对目标 agent 仅约 10 次 query。相比之下,传统的 RL 攻击器通常需要上万次交互做训练 + 数百次做测试,单样本成本压低一个量级以上。代码公开在 https://github.com/wang-yanting/PIMiner。
需要注意的几处口径:
- 评测口径是任务级 ASR,不是字符串注入成功率。
- 没明确公布策略库在训练阶段的 query 总量,是评估迁移性 vs 总成本时要看的一环。
亮点与局限
亮点
- 迁移性是真正的设计目标:训练阶段就按"序列 (数据集, 目标)"展开,测试时对新目标 LLM 直接复用,不重新训练。RL 路线要补这个能力往往要加对抗/分布外正则。
- 攻击样本成本极低:~10 query/sample,对大规模安全数据采集比 RL 路线廉价得多,反过来能给防御训练提供更多正向/负向样本。
- 策略库可解释:每条策略是自然语言条目,不是模型权重,能被人读、被审查、被拒答型防御结合。
局限 / 边界
- Claude-Sonnet-4.5 上仍最弱:两个基准下都只有 40% 出头,可见更强的指令型安全训练确实提高了"被注入"的下限;论文没有量化"防御强度 vs ASR"的曲线。
- 测试时依赖目标 agent 暴露足够行为信号:判定成功的逻辑需要任务级反馈;在严格黑盒、只能看最终答案的场景里,
is_success的召回会变差。 - 策略库上限未被量化:库中条目数 vs 迁移增益、库大小 vs 检索噪声,论文没有给出 ablation。
- AI 安全伦理:作者公开的代码与策略库本身是攻击工具,使用方需自合规约束。
对工程落地的启发
- 把红队测试当成产品基础设施而不是一次性研究脚本。一旦策略库成型,新模型接入时不需要重训攻击器,只跑库检索 + ~10 query 抽样评估即可,这适合 CI/灰度阶段的安全门禁。
- 攻击侧的"小数据 + 强迁移"对防御侧训练数据采集特别有用。传统 RL 攻击器单条 prompt 训练成本高,迁移到下游防御时往往样本多样性不够;策略库式系统天然能给出更广的 (query, response, 成功信号) 三元组。
- 用自然语言策略条目作审计面。审计/合规场景下,能展示"为什么这次被判定为成功攻击"比"模型权重里有什么"更可读。
- 对齐策略库版本与目标 agent 版本。换基座/RLHF 版本时,最好把策略库再过一遍——否则会出现"过去对 GPT-5.1 有效的策略,对 GPT-5.2 全面失败"或反之的安全盲区。
与同方向工作的关系
- 相对 RL-based 攻击器 (e.g. 各类基于 PPO/GAIL 的 prompt 攻击):PIMiner 用"外部可读知识库 + 检索组合"替代"参数化攻击模型",迁移成本与黑盒友好度都好得多,但上限受检索质量与策略覆盖度制约。
- 相对 手工模板攻击 + 启发式 (e.g. GCG / 各类字符级扰动):PIMiner 是高层 agentic 攻击,更接近"社会工程+语义"层,不会陷入 token 级扰动的可检测性陷阱。
- 相对 AgentDojo / IPIArena 等基准:本论文不是新基准,而是把这些基准当作"目标 agent 集合"使用,强调横向迁移。
- 与 MCP / 工具调用 agent 的安全研究:本工作目标 agent 通常包含工具调用,所以成果可直接迁移到评估工具调用类 agent,但具体 MCP 协议级注入的覆盖度论文未涉及。
适合谁读
- 做 LLM agent 安全 的研究/工程同学,要换掉 RL 攻击器的迁移性瓶颈。
- 做 红队平台 / AI 安全产品 的同学,想把攻击侧成本压到每个样本 ~10 query 的量级。
- 做 防御训练数据收集 的同学,需要一个能跨目标 LLM 多样化产出的攻击器。
- 关注 AI 安全治理 / 模型上线合规 的同学,关注策略库的可解释与可审查属性。
不确定处 / 原文未明确
- 训练阶段对各 (数据集, 目标) 对所用 query 总预算,论文未给出。
- 策略库的最终规模、检索算法细节、策略条目间的去重 / 优先级机制,原文未量化。
is_success的具体判定实现细节(是否调用额外 judge 模型、是否需要 task-level 模拟器)未公开。- 在 MCP / 工具调用型 agent 上的扩展性,原文未明确。
工程落地与核查(Jay)
如何本地复现(最小可跑路径)
# 1. 克隆 repo(GitHub: wang-yanting/PIMiner)
git clone https://github.com/wang-yanting/PIMiner.git
cd PIMiner
# 2. 安装依赖(建议 Python 3.10+,requirements.txt 需确认)
pip install -r requirements.txt
# 3. 下载评测数据(IPIArena / AgentDoJo 需各自准备)
# 论文未说明数据打包方式,需自行从对应基准 repo 获取
# 4. 构建策略库(训练阶段)
# 需指定 --datasets 和 --target-models 参数
python scripts/build_lib.py --datasets IPIArena --target-models gpt-5.1 gemini-2.5-pro claude-sonnet-4.5
# 5. 评估(新目标 LLM,零重训)
python scripts/attack.py \
--target-model <NEW_MODEL_NAME> \
--library-path outputs/strategy_library.json \
--max-queries 10 \
--output results/
注意:repo 公开的是研究代码,工程部署前需补充:结果日志、多次运行的统计显著性报告、is_success 的可配置 judge 接口。
实际系统怎么用
适用场景: - CI/CD 安全门禁:每个 PR 的 LLM agent 提交跑一次 PIMiner 攻击抽样(~10 query/sample),ASR 超过阈值则 block 合并。 - 防御数据采集:用 PIMiner 产出 (attack_payload, agent_response, success_signal) 三元组,喂给 reward model 或 DPO 训练。 - 模型安全评级:跨多个 LLM 对比 ASR,建立内部"安全水位线"基线。
不可用场景: - 实时防御拦截:PIMiner 是离线评测工具,不适合在 agent 运行时做实时检测。 - 绝对安全证明:ASR 低 ≠ 安全,只是"在这套评测下没被攻破"。
核心坑与避让
| 坑点 | 说明 | 避让方式 |
|---|---|---|
| 策略库版本与目标模型强绑定 | 库条目记录的是"对 GPT-5.1 有效",换模型后检索召回率下降 | 每个新模型家族维护独立子库,或定期做库增强(re-populate) |
| is_success 判定依赖任务模拟器 | 黑盒环境下任务完成度难判定,可能漏计"部分成功" | 引入 judge LLM 做任务级评估;或在 tool-use trace 中埋隐式完成信号 |
| GitHub repo 维护状态未知 | 研究代码可能缺乏长期维护,依赖更新后工具链断裂 | 用 Docker 固化环境;定期 fork 备份 |
| 攻击工具被滥用风险 | 策略库本身是攻击向量,合规团队须做访问控制 | repo 不公开策略库成品;仅在受控测试环境内使用;添加使用协议 |
| Claude 系 ASR 低≠绝对安全 | Claude 安全训练强,但不代表防御了所有注入路径 | ASR 只是一个维度;补充语义注入、上下文冲突等专项测试 |
核查清单(精修后验证)
- [ ]
https://github.com/wang-yaiting/PIMiner能正常访问(GitHub URL 拼写已核实为wang-yanting) - [ ]
is_success的判定逻辑已从 repo 代码中核实(非纯字符串匹配) - [ ] 策略库训练阶段 query 总量已补充到文档(原文缺失,建议引用时加注"(需核实)")
- [ ] 工具调用型 agent(尤其 MCP 协议)的攻击覆盖度已有专项测试方案
- [ ] 使用前已完成合规审查(攻击工具不适用于未授权系统)
核查注记:GitHub URL 拼写(wang-yanting vs wang-yanting)已做基础核实,但策略库训练成本数字缺失,建议引用时标注。