桃子桃子快讯
返回首页
研究论文

针对 MCP 伪装攻击的对齐代码公开:RAG 方法带来约 3 倍拒答率提升

研究者发布 MCP 伪装良性攻击的对齐训练代码与论文,现有 1B–14B 模型原生拒答率不超 35%,RAG-Pref…

2026.07.09 · 周四4 分钟阅读

研究者公开了针对 Model Context Protocol(MCP)「伪装良性攻击」的对齐训练代码与配套论文,实验显示现有 1B–14B 参数的模型对这类攻击的原生拒答率不超过 35%,而结合检索增强的训练无关方法 RAG-Pref 可使拒答率提升约 3 倍,与 DPO/SafeDPO 联合使用后进一步达到约 3.7 倍。

研究背景:伪装良性的 MCP 攻击

随着大模型智能体(agent)广泛使用 MCP 调用外部工具,一种新型攻击范式正在出现——「伪装良性攻击」(Falsely-Benign Attacks, FBAs)。这类攻击将恶意指令包装成看似无害的普通请求,依赖 CVE 衍生的 MCP 工具调用场景,使模型难辨真实意图。本次开源的仓库为研究社区提供了复现、对齐与扩展的整套工具链,配套论文分别为 arXiv:2505.23634 与 arXiv:2605.11217。

关键发现:现有对齐方案效果有限

实验覆盖 1B 至 14B 参数规模的安全调优模型,主要结论包括:

  • 开箱即用状态下,没有任何模型的拒答率超过 35%;
  • 标准 DPO 与 SafeDPO 对齐训练最多将该指标推至 48%;
  • 论文提出的 RAG-Pref(一种无需训练、基于检索的对齐方法)单独使用即可获得约 3 倍的拒答率提升;
  • 与 DPO/SafeDPO 结合后,组合方案达到约 3.7 倍提升。

具体数字与完整评测见两篇 arXiv 论文。

对齐方法实现

仓库实现了多条对齐路线,覆盖训练式与无需训练两类:

  • DPO / SafeDPO:基于 TRL 的 DPOTrainer;SafeDPOTrainer 作为子类,在偏好对被打上 better_is_unsafe / worse_is_unsafe 标签时引入安全惩罚项,并提供 safedpo 损失类型;
  • OPAD:运行时、无需训练的原则引导对比解码,可叠加在 DPO/SafeDPO 的 PEFT 检查点之上;
  • RAG-Pref:生成时检索相似攻击/良性样本并注入系统提示,同样可与 PEFT 检查点组合;
  • Vanilla RAG 作为基线,便于对照。

训练脚本使用 4-bit QLoRA 量化底座模型并接入 LoRA 适配器,通过 accelerate 启动,可借助 TRL 的标准 DPOConfig / ModelConfig CLI 参数进行调整。

数据集与复现要求

配套数据集 johnhalloran/mcp-fbas 已在 Hugging Face 发布,包含三个配置:

  • default / train:约 2600 条 DPO/SafeDPO 偏好对,攻击与良性样本各占一半;
  • test_attack:109 条留出的 FBA 提示,用于评估拒答率;
  • test_benign:171 条真正良性提示,用于衡量过度拒答。

环境方面要求 CUDA GPU(支持 flash-attention)、Python 3.11,并通过 huggingface-cli 登录以访问受限的 mcp-fbas 数据集。RAG-Pref 依赖直接安装自 GitHub 的 golden 检索包,纯做 DPO/SafeDPO/OPAD 实验时可跳过;评测阶段则可通过 mcp_test_cache.py 生成响应、mcp_judge_cache.py 进行两阶段拒答打分。

信源