Cheatsheet · 题解

Agent Safety & Alignment / Agent 安全与对齐

给 agent 接上工具、放它进真实环境后,它不止能做对事,也能做坏事——故意做坏(sabotage)、被劫持做坏(prompt injection)、无意做坏(工具误用)。agent safety 不是「能力评测跑完再加一层」,而是 agent 系统设计的一等公民

注意 / Caution

学习笔记,非作者研究成果(见 README 诚信声明)。安全数字几乎都绑定特定威胁模型 + 实验设定,本页引用均带 scope,不带 scope 的数字请视为无效。

0. TL;DR 速查

1. 为什么 agent safety ≠ chatbot safety / Why agent safety ≠ chatbot safety

chatbot 安全的核心关切是不输出有害文本;agent 安全要管的是不执行有害动作——两者在三个轴上不同:

Chatbot Agent
动作空间 输出 token(只读) 工具调用 / 代码执行 / 写操作(有副作用)
攻击面 用户 prompt(直接注入) 用户 prompt + 工具返回 + 网页/文档/邮件内容(间接注入)
失败后果 有害文本(可过滤/撤回) 不可逆副作用(删数据/发请求/修改生产系统)
监控难度 看单次输出 多步轨迹,单步合法但序列组合可能越权
提示 / Note

核心: agent 安全的单位不是「一次输出是否安全」,而是「一条轨迹在给定权限和上下文中是否安全」。单步各自无害的合法动作,串联起来可能构成攻击(如「读文件→编码→外发请求」三步分开都合法,一起做就是数据外泄)。

agent 特有的四个安全维度(与姊妹篇 agent-evaluation §6 互补,那里讲评测方法学,这里讲防御):

  1. 注入防御(§2):阻止外部内容劫持 agent 控制流
  2. 轨迹监控(§3):多步序列的异常检测
  3. 可扩展监督(§4):自动化安全训练与评估
  4. 工具护栏(§5):在动作执行前拦截危险操作

2. Prompt injection & 工具投毒 / Prompt injection & tool poisoning

2.1 直接 vs 间接注入

直接注入(direct prompt injection):攻击者在用户 prompt 中注入恶意指令,劫持模型行为。

间接注入(indirect prompt injection)1外部内容中的恶意指令劫持 LLM 应用;首次系统化定义间接 prompt injection。Greshake 2023 ↗:攻击者将恶意指令隐藏在agent 会主动读取的外部内容中——网页、邮件正文、文档、数据库记录。agent 读入这些内容后,恶意文本进入上下文,以「合法内容」身份劫持后续行为。

注意 / Caution

MCP / A2A 协议本身不防注入。MCP 的 host 负责工具权限,但对「工具返回的内容」是否含恶意指令没有协议级防护——模型看到的是原始工具返回文本,如果攻击者控制了一个 MCP server 的输出,注入就通过工具返回通道进入上下文。安全责任在 host 侧:host 要对工具返回做 sanitization、限制工具联网范围、审核 MCP server 的信任度。

2.2 多 agent 注入的放大效应

在多 agent 编排器(如 AutoGen/MetaGPT)中,间接注入可以传播:一个 agent 被注入 → 它的输出被另一个 agent 作为输入消费 → 恶意指令在 agent 间级联传播,最终编排器执行任意代码。Triedman 20252特定 web 注入攻击下,让多 agent 编排器执行任意恶意代码的攻击成功率达 58-90%,个别配置 100%(scope:控制流劫持攻击成功率,非一般部署行为)。Triedman 2025 ↗ 的研究表明:在特定 web 注入攻击下,编排器的恶意执行率可达 58-90%(随 orchestrator 而变,个别配置达 100%)。

陷阱 / Pitfall

引用此数字必带 scope: 它是「特定 web 注入攻击下的控制流劫持成功率」,不是「agent 一般部署中就会按此比例作恶」。见 agent-evaluation §6 诚信门。

2.3 防御层级

层级 做法 效果 局限
1. 输入清洗 对外部内容做规则/模型检测 + 标记「以下内容来自外部」 拦截已知攻击模式 0-day 注入/对抗样本可绕过
2. 上下文隔离 外部内容放在特殊 token 间,模型被训练为不执行其中的「指令」 结构性防注入 训练成本高,覆盖不全
3. 权限最小化 agent 只能调最小权限的工具集,不因「被注入」就获得高权限 注入成功也做不了大事 权限太严影响功能
4. Human-in-the-loop 高风险操作(写文件/发请求/删数据)须人工确认 最后一道防线 延迟 + 人力成本
陷阱 / Pitfall

误区: 「加一句 system prompt '忽略所有外部指令' 就防注入了」。system prompt 加固有作用但不可靠:它依赖模型理解并遵循,而注入攻击正是利用模型无法区分「真 system prompt」和「伪装成指令的用户/工具内容」这一根本缺陷。system prompt 加固做的是提高攻击门槛,不是根除;需要与权限最小化 + human-in-the-loop 组合。

from-scratch 实现(工具输出沙箱:将外部内容标注为不可信数据 + 权限最小化 wrapper):

46 行 / lines
import re

class ToolGuard:
    """工具调用防御层:标注工具返回为不可信 + 危险操作拦截 + 输出过滤。"""
    DANGER_PATTERNS = [
        r"(?i)ignore\s+(all\s+)?(previous|above|prior)\s+instructions?",  # 注入指令
        r"(?i)you\s+(are|now)\s+a\s+(different|new)\s+(ai|assistant|model)",  # 角色劫持
        r"(?i)as\s+an\s+AI\s+(language\s+)?model\s*(,|\s+you\s+must)",   # 新角色指令
    ]

    def sanitize_tool_output(self, raw_output: str) -> dict:
        """标注工具返回为不可信,检测已知注入模式。
        返回 {'content': str, 'tainted': bool, 'alerts': list}。"""
        alerts = []
        for pat in self.DANGER_PATTERNS:
            if re.search(pat, raw_output):
                alerts.append(f"suspicious pattern: {pat}")
        # 包裹为不可信标记:用特殊 token 隔开(productions 里用 XML tag 或 role-based)
        safe = f'<external_content>{raw_output}</external_content>'
        return {"content": safe, "tainted": len(alerts) > 0, "alerts": alerts}

    def guard_action(self, tool_name: str, tool_args: dict, policy: dict) -> bool:
        """权限最小化:检查动作是否符合预注册的权限策略。
        policy: {tool_name: {allowed_args: set, require_confirm: list}}。
        返回 True=允许, False=需确认/拦截。"""
        allowed = policy.get(tool_name, {})
        # 1. 检查工具是否在允许列表中
        if tool_name not in policy:
            return False                                    # 未注册工具:默认禁止
        # 2. 检查参数是否符合白名单(如禁止 file_delete,禁止写系统目录)
        if "forbidden_args" in allowed:
            for arg in allowed["forbidden_args"]:
                if str(arg) in str(tool_args):
                    return False
        # 3. 高风险参数需人工确认
        if "require_confirm" in allowed:
            for arg in allowed["require_confirm"]:
                if str(arg) in str(tool_args):
                    return False                            # 返回 False 触发 HITL
        return True
# 面试关键点:
# ① 工具返回标注为不可信(用 XML tag/role 包裹),与系统指令隔离;不让模型裸读外部内容
# ② 权限最小化:每个工具预注册作用域(可读路径/可写 API),越界即拦截——在模型之外,确定性执行
# ③ 正则检测是粗过滤器(提门槛),替代不了权限层——真正的防线是第②③层
# ④ human-in-the-loop 是最后防线,不是第一道——高频操作不能全靠人,要分级

3. 轨迹级监控与审计 / Trajectory-level monitoring & audit

agent 安全监控的单位应为完整轨迹而非单步动作——单步各自合法但序列组合可能构成攻击。

3.1 异常检测三信号

信号 检测什么 例子
工具调用模式 是否出现了异常的工具组合/顺序 读文件→base64 编码→发 HTTP 请求(外泄链)
动作频率/预算 是否超出频率/步数/token 预算 突然大量调文件系统 API、短时间内密集发请求
分布偏移 轨迹是否偏离该任务类型的正常分布 代码修复 agent 突然开始读 /etc/passwd

实现方式:① 规则引擎(已知危险模式的黑名单 + 预算门限);② 统计异常检测(基于历史轨迹的 embedding/特征分布,flag 偏离正常分布的轨迹);③ 另一个 LLM 做轨迹审计(类似 LLM-judge 但目标是 safety 而非 correctness,有 judge 的可靠性坑,见 agent-evaluation Q8)。

3.2 审计日志

每条生产轨迹应记录:timestamp、task_id、完整动作序列、调用的工具及参数、每步 token 消耗、是否触发 safety gate、是否有人工确认注意:完整工具参数和轨迹可能包含密钥/PII/凭证,日志本身是新的安全攻击面——须做脱敏(redact secrets/PII)、加密存储 + 访问控制设置保留周期、避免明文存储原始凭证/敏感工具输出。审计日志的目的不是实时拦截(那是护栏干的事),而是事后追溯:出了安全事件能重现完整链路、定位是注入/误用/系统缺陷。

陷阱 / Pitfall

误区: 「跑一次 safety benchmark 高分就安全了」。safety 不是一次性评测能「通过」的东西——它是纵深防御的持续过程:新攻击面随新工具/新集成而出现,需要持续的监控+审计+更新。benchmark 安全分只是某一时点的 snapshot。

4. 可扩展监督 / Scalable oversight

当 agent 的行为空间变大、人工审查每一条轨迹不现实时,需要自动化安全训练与监督方法。

4.1 Deliberative Alignment

Deliberative Alignment3OpenAI o1 的安全训练方法:赋予模型推理时间,让它"思考"安全规范再回答,在越狱抵抗/stereotype/过拒等轴上显著优于 GPT-4o(如 o1 越狱分 0.88 vs GPT-4o 0.37,hard refusals 同比改善)。Guan 2024 ↗ 的核心思路:让模型在推理时显式「思考」安全规范再生成回答,而非仅靠 RLHF 隐式注入偏好。

4.2 Constitutional Classifiers

Constitutional Classifiers4Anthropic 的护栏:基于 constitution(安全宪法)自动生成合成 prompt/completion 训练数据,训练输入/输出分类器;评测邀请了 183 名活跃红队参与者,估计 >3000 小时红队投入。Anthropic 2025 ↗(Anthropic):

4.3 Best-of-N 越狱攻击(自动化红队视角)

Best-of-N Jailbreaking5用 Best-of-N 采样作为自动化红队攻击方法:多次采样寻找成功越狱;GPT-4o 攻击成功率 ~89%(10k 增强 prompt 下)。攻击者可用其做大规模越狱测试,防御视角则需考虑 Best-of-N 攻击的对称性(增大防御 N 也增大推理成本)。Hughes 2024 ↗ 展示了一种自动化越狱攻击方法:

方法 监督来源 适用于 agent 盲区
Deliberative Alignment 模型自身推理 高(think step 天然适配) 推理质量依赖;think 可被注入
Constitutional Classifiers 合成数据+对抗训练 中(action 前做分类) constitution 覆盖面
Best-of-N(攻击,非防御) 多次采样+judge 找成功越狱(GPT-4o ASR ~89%) 低(攻击方可加大采样预算绕过单次 filter) 攻防不对称(防御加大 N 也加大推理成本)

4.4 Crescendo:多轮升级攻击

Crescendo6多轮逐步升级攻击:不是一次性请求危险内容,而是通过多轮对话逐步引导模型到危险输出。Russinovich 2024 ↗ 是一种多轮逐步升级攻击:攻击者不直接请求危险内容(那会被拒),而是通过一系列看似无害的渐进式问题,逐步引导模型输出危险信息。agent 场景比 chatbot 更危险:agent 天然是多轮交互,攻击者可以把恶意目标拆成多个无害子步骤,每步都合法,但序列组合构成攻击——轨迹级监控(§3)的核心 motivation 即在此。

5. 工具级护栏 / Tool-level guardrails

这是纵深防御的最内层——在 agent 即将执行一个动作前拦截。即使前面的所有层(注入检测/轨迹监控)都漏了,这一层仍可以阻止高危操作。

5.1 护栏四层

Agent 决策: "我要调 delete_file('/prod/db.sqlite')"
              │
              ▼
┌─────────────────────────┐
│ 1. 权限检查(Capability) │ → tool allowlist 里有没有 delete_file? → ❌ 禁止
└───────────┬─────────────┘
              │ 通过
              ▼
┌─────────────────────────┐
│ 2. 参数校验(Validation) │ → 参数路径是否在允许范围内? → ❌ /prod/ 是保护区
└───────────┬─────────────┘
              │ 通过
              ▼
┌─────────────────────────┐
│ 3. 频率/预算(Rate/Budget)│ → 本轨迹已执行多少次写操作? → ❌ 超出配额
└───────────┬─────────────┘
              │ 通过
              ▼
┌─────────────────────────┐
│ 4. Human-in-the-loop    │ → 展示"将删除 /prod/db.sqlite,确认?" → 人工拒绝
└─────────────────────────┘

5.2 权限最小化原则

给 agent 的工具集 = 完成任务所需的最小集合。具体:

提示 / Note

设计原则: 不是「猜 agent 会做什么坏事然后拦截」,而是「只给 agent 做事的最小权限,在这个边界之外的事它根本做不了」。后者比前者可靠得多。

6. 多 agent 信任与控制 / Multi-agent trust & control

多 agent 系统将安全复杂度从 O(1)O(1) 推到 O(N2)O(N^2):agent 间有信任依赖,一个被注入/被操纵的 agent 会污染所有依赖于它的下游 agent。

6.1 信任边界

信任模型 描述 安全性质
完全互信(Flat) 所有 agent 共享上下文,任意子 agent 的输出直接进其他 agent 的 prompt 最脆弱;一个被注入 = 全系统被注入
编排器隔离(Orchestrator-gated) 编排器是唯一入口,子 agent 输出经编排器清洗后再分发 编排器是单一可信点,编排器被注入则全崩
最小信任(Least-trust) 每个 agent 只在需要知道的最小上下文中运行,输出经验证后再传递 最强但工程代价最高

6.2 信息流控制

问题:在多 agent 协作中,agent A 调了工具获取敏感数据 → 敏感数据进入 A 的上下文 → A 的输出传给 B → 敏感数据在 agent 间级联扩散,最终可能被不可信的 agent 或外部用户获取。

缓解:① 数据分级标签(public/internal/restricted),跨 agent 传递时附标签;② 输出过滤——agent 输出在进入下一个 agent 的上下文前,做 PII/敏感数据扫描;③ 审计信息流——记录哪些数据经过了哪些 agent,事后可追溯。

陷阱 / Pitfall

误区: 「多 agent 系统里每个 agent 都是同一个基础模型,安全特性相同,所以总体安全」。模型也许相同,但上下文不同——agent A 的上下文里有敏感文件内容,agent B 没有。A 被注入后泄露的不是「模型本身的漏洞」而是「上下文中携带的敏感信息」。安全取决于上下文隔离,而非模型一致性。

7. 欺骗对齐: sabotage 与 sandbagging / Deception: sabotage & sandbagging

7.1 区别

7.2 Sabotage 评测框架(不是存在性声明)

Anthropic 20247Anthropic 提出的 sabotage 评测框架:code sabotage / sandbagging / undermining oversight / decision sabotage;本页只描述框架,不引具体百分比。Anthropic 2024 ↗ 给出了评测 sabotage 能力的框架,包括四项:

  1. code sabotage:让模型写有隐藏 bug 的代码
  2. sandbagging:让模型在有监督评测时故意答错
  3. undermining oversight:让模型削弱对其的监督机制
  4. decision sabotage:让模型在决策场景中做破坏性选择

关键诚信门:这是评测框架(怎么测 sabotage capability),而非存在性声明(模型真的会 sabotage)。本页不引流传的具体百分比(未能核实到原始设定),只描述框架。

注意 / Caution

agent 场景为什么比 chatbot 更需关注 sabotage: agent 有工具(可执行代码/可修改文件/可发请求),sabotage 的「杀伤半径」远大于 chatbot 的「输出错误文本」;且 agent 的多步轨迹让 sabotage 可以隐藏在看似正常的操作序列中(如代码 sabotage: agent 写的代码表面上能通过可见单测,但隐藏了在特定输入下触发的 bug)。

7.3 Sandbagging 与评测的关系

sandbagging 直接冲击 agent 评测的有效性(与 agent-evaluation 互链):如果模型在评测时 sandbag,那所有 benchmark 分数都是下界,不是真实能力——你测到的不是「模型能做什么」而是「模型愿意让你看到什么」。这是 agent safety 和 agent evaluation 交叉的最前沿问题,目前尚无成熟的检测方案。


分层面试题 / Stratified follow-ups

注意 / Caution

下列「会被问」均为据公开 JD + 技报推断,非真实面试原题。

L1 基础

1. agent 安全与 chatbot 安全的核心区别是什么?

答:三轴不同:① 动作空间——agent 能执行有副作用的操作(写文件/发请求/改代码),chatbot 只能输出 token;② 攻击面——agent 多了工具返回/外部内容(网页/邮件/文档)的间接注入通道;③ 监控单位——agent 要监控多步轨迹而非单次输出,单步合法但序列组合可能越权。一句话:chatbot 安全管「不说什么」,agent 安全管「不做什么」。

追问: 为什么「单步各自合法」的动作序列可能构成安全威胁? → 三步为例:读文件(合法)→ base64 编码(合法)→ 外发 HTTP 请求(合法,如果 agent 有网络权限)。三步分开看都是工具的正常使用,组合起来就是数据外泄攻击——只有轨迹级监控能看到这个 pattern。

2. 间接 prompt injection 是什么?为什么比直接注入更难防?

答:间接注入 = 恶意指令藏在 agent 主动读取的外部内容中(网页/文档/邮件)——agent 必须读入才能判断内容是否安全,但读入的那一瞬恶意指令已进入上下文,开始影响后续行为。直接注入(在用户 prompt 里)可以被前置过滤;间接注入的载体是「合法可信」的外部数据源,agent 无法预判。

追问: MCP 协议能防注入吗? → 不能。MCP 管的是「agent 可以调哪些工具、怎么调」(纵向集成),对「工具返回的内容是否含恶意指令」没有协议级防护。安全在 host 侧:host 要对工具返回做 sanitization、限制 MCP server 的联网范围、审核 server 信任度。

3. 工具级护栏的四层分别是什么?为什么权限最小化比试图「检测一切恶意行为」更可靠?

答:四层 = 权限检查(allowlist,不在名单的直接拒绝)→ 参数校验(参数范围/路径约束)→ 频率/预算限制(单轨迹写操作配额)→ Human-in-the-loop(高风险操作人工确认)。权限最小化更可靠是因为它封闭了攻击面——不给的权限 agent 根本做不了,不依赖「猜对 agent 会做什么坏事」;而「检测一切恶意行为」是对抗性博弈,新攻击模式会不断绕过规则。

追问: 权限最小化的代价是什么? → agent 可能因权限不够而无法完成一些本应合法的复杂任务——需要额外的权限申请/审批流程,增加了交互轮数和延迟。这是 safety-capability tradeoff 在 agent 上的具体体现。

L2 进阶

4. Deliberative Alignment 和 Constitutional Classifiers 各解决什么问题?分别有什么盲区?

答:Deliberative Alignment 让模型在推理时显式「思考」安全规范再回答(think step 做 deliberation),o1 在越狱抵抗上远超 GPT-4o;盲区:依赖模型自身推理质量,如果 think 被注入或推理本身出错,safety check 失效。Constitutional Classifiers 用合成数据 + 对抗训练训练轻量级护栏分类器,在推理时快速判断是否拦截;盲区:constitution 覆盖不到的边缘攻击可能漏过,合成数据无法穷尽真实攻击分布。两者互补:Deliberative Alignment 做模型内置的「慢思考」安全,Constitutional Classifiers 做外部的「快判断」护栏。

追问: 它们在 agent 场景的适用性分别如何? → Deliberative Alignment 天然适配 agent(think step 就是 deliberation 的载体,且 agent 多步给了多次 safety check 机会);Constitutional Classifiers 可嵌入 action pipeline,在每步动作执行前做分类,但如果 constitution 没覆盖「多步组合攻击」,分类器每步判 safe 但序列组合仍然危险。

5. 轨迹级异常检测怎么做?规则引擎 vs 统计检测 vs LLM 审计各自能抓到什么?

答:① 规则引擎——抓已知危险模式(黑名单工具组合/预算超限),快且确定性,但无法抓未知/变种;② 统计异常检测——基于历史轨迹的 embedding 分布,flag 偏离正常分布的轨迹,可抓到未见过的异常模式,但需要足够历史数据 + 有假阳性;③ LLM 审计——另一个 LLM 审轨迹、判断多步是否构成安全威胁,灵活但自带 judge 偏置和成本。实务组合:规则引擎做第一层实时拦截(低延迟+已知模式确定性拦截),统计检测做第二层异步 flag(查异常),LLM 审计做第三层 flag 上的人工复核加速器。

追问: 为什么不直接用 LLM 审每条轨迹? → 成本 + 延迟:一条多轮轨迹数万 token,LLM 审计的算力成本可能接近甚至超过 agent 本身的推理成本;且实时审计增加每步延迟。所以 LLM 审计只对「前两层 flag 出来的可疑轨迹」做,而非全量。

6. 多 agent 系统的安全复杂度为什么是 O(N²) 而非 O(N)?信任边界怎么设计?

答:每个 agent 的上下文里包含从其他 agent 接收的信息 → 信息在 agent 间构成依赖图而非线性链。agent A 被注入 → A 的输出污染 B → B 的输出再污染 C 和 D → 级联扩散,追踪源头和影响面需要回溯完整信息流图(NN 个 agent 最多 N(N1)/2N(N-1)/2 条边)。信任边界设计:编排器隔离(所有通信经可信编排器清洗,编排器是单一可信点)是工程上最实惠的方案;最小信任(每个 agent 在最小上下文中运行,输出经验证后再传递)安全最强但工程代价最高。

追问: 「编排器隔离」凭什么比「完全互信」安全?不都依赖同一个基础模型吗? → 不是模型的问题,是上下文隔离的问题。完全互信下子 agent A 的未清洗输出直接注入子 agent B 的上下文——攻击者只需攻破 A(上下文里可能有敏感数据)即可传播。编排器隔离下,编排器在分发前对 A 的输出做清洗/脱敏/格式校验,切断了原始注入内容向 B 的直接传播路径;编排器虽仍是单点,但其攻击面比「全互联」小得多。

L3 深入

7. 设计一个生产级 agent 安全架构,从外到内需要哪几层?每层防什么、防不住什么?

答:五层纵深(外→内):① 输入层(注入检测/上下文隔离)——防外部恶意内容进入;盲区:0-day 注入/对抗样本。② 模型层(Deliberative Alignment/安全微调)——让模型内化安全规范,在 think step 做 safety check;盲区:推理质量依赖,think 可被注入。③ 动作层(工具护栏:权限/参数/频率/HITL)——在动作执行前拦截;盲区:权限太严影响功能,正常但恶意的序列(每步都合法)这层可能不 flag。④ 轨迹层(规则+统计+LLM 审计)——检测多步组合攻击;盲区:规则抓不到变种,统计需历史数据。⑤ 审计层(完整轨迹日志+事后追溯)——不实时拦截,事后重现链路;盲区:不能阻止损失,只能止损+改进。

提示 / Note

五层的关系是「纵深」而非「并列」: 每一层都有自己防不住的东西,但五层重叠覆盖使得攻击者需要同时绕过所有层才能造成实质损害——这正是 defense in depth 的核心逻辑。没有哪一层是 silver bullet。

追问: 这五层的延迟/成本从外到内如何? → 输入层(毫秒级,轻量);模型层(若融入已有 think step 则无额外调用,但更多 safety reasoning token 会增加延迟;独立 safety 模型调用则增加一次推理延迟);动作层(毫秒级校验,同步;HITL 秒到分级,异步);轨迹层(秒到分级,异步,不在实时路径上;但对高风险的 exfiltration chain 可能需要同步滑动窗口检查);审计层(离线,无实时延迟)。实时路径上主要靠前三层,轨迹层对高风险路径可加同步检查,审计层异步执行。

8. sabotage/sandbagging 在 agent 场景与 chatbot 场景有什么本质不同?为什么 agent 评测更受 sandbagging 威胁?

答:sabotage:agent 有工具(可执行代码/可修改文件),sabotage 的「杀伤半径」远大于 chatbot——chatbot sabotage 是「输出错误答案」,agent sabotage 可以是「写一个在特定条件下触发的后门代码」「静默禁用监控脚本」。sandbagging:agent 评测完全依赖模型在多步交互中「展现的能力」,如果模型学会在评测时故意降低表现(如刻意做次优决策、故意在简单题上失败),所有 benchmark 分数都是下界而非真实能力,而 chatbot sandbagging 至少可以被多次问答的统计模式暴露。agent 的 sandbagging 检测更难因为:多步交互给了模型更多「藏拙」的空间(比如每 10 步才故意错一步),且 agent benchmark 通常只关心终态对错而不看轨迹质量。

追问: 目前有检测 sandbagging 的成熟方法吗? → 没有。这是 2024-25 的前沿开放问题。一些探索方向:对比「有监督评测」和「无监督部署」的行为分布差异、检查模型在简单题上是否异常失败、用 multiple sandbagging triggers 尝试触发不同行为模式。但这些都还在研究阶段,没有工程化的可靠检测。

9.(诚信题)引用 agent safety 数字时最常见的三个失信坑是什么?如何避免?

答:① 脱 scope:把「特定 web 注入攻击下的攻击成功率 58-90%」当成「agent 一般部署就会这样作恶」——必须带威胁模型+攻击场景;② 评测框架当存在性声明:把 Anthropic sabotage evaluations(一个评测框架)说成「模型会主动 sabotage」——评测框架测的是 capability,不是 propensity;③ 数字溯源断裂:流传的某个 sabotage/越狱百分比找不到原始出处和设定,但被反复引用——碰到这种情况直接弃用,不帮助传播。避免:引用任何安全数字时,必带 scope(威胁模型+实验设定+出处+日期),safety 数字不带 scope 就是失真。

追问: 「safety benchmark 高分 = 部署安全」为什么是错的? → safety benchmark 测的是特定威胁模型下的 snapshot,不代表覆盖了 agent 实际部署中遇到的所有攻击面。新工具 = 新攻击面,新集成 = 新注入通道;safety 是纵深防御的持续过程,不是「过了一个测试」就了事。就像不能说「过了一次消防检查就不需要烟雾报警器了」——持续监控和应急响应是安全的核心,不是一次性的测试通过。


参考文献 / References

均有可核验的一手来源;安全数字均带 scope。指向 agent evaluation 的链接为互补阅读。

  1. Greshake et al. Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection. 2023. arXiv:2302.12173 — 间接 prompt injection 首次系统化定义.
  2. Triedman, Jha, Shmatikov. Multi-Agent Systems Execute Arbitrary Malicious Code. 2025. arXiv:2503.12188 — 多 agent 编排器 web 注入攻击成功率(scope-locked).
  3. Guan et al. Deliberative Alignment: Reasoning Enables Safer Language Models. 2024. arXiv:2412.16339 — o1 推理时 safety deliberation;越狱抵抗显著优于 GPT-4o.
  4. Anthropic. Constitutional Classifiers: Defending against Universal Jailbreaks. 2025. arXiv:2501.18837 — 基于 constitution 的合成数据 + 对抗训练护栏.
  5. Hughes et al. Best-of-N Jailbreaking. 2024. arXiv:2412.03556 — 随机扰动+重复采样越狱攻击;GPT-4o ASR ~89%(10k 增强 prompt).
  6. Russinovich et al. Great, Now Write an Article About That: The Crescendo Multi-Turn LLM Jailbreak Attack. 2024. arXiv:2404.01833 — 多轮逐步升级越狱.
  7. Anthropic (Benton et al.). Sabotage Evaluations for Frontier Models. 2024. arXiv:2410.21514 — sabotage/sandbagging 评测框架(本页只描述框架,不引具体百分比).