Soft Instruction De-Escalation Defense

Soft Instruction De-Escalation Defense》(软指令降级防御)。主要作者来自 CISPA Helmholtz Center 和 Google DeepMind 。

ICLR 2026在投,6666。

motivation

提示注入的目前的防御方法通常依赖于检测过滤。然而,这些方法要么过于严格(导致误报率高,拒绝正常请求),要么容易被攻击者通过“对抗性重写”(Adversarial Rephrasing)绕过 。

方法:SIC (Soft Instruction Control)

SIC 是一个在数据进入智能体之前的预处理层,具体步骤如下 :

1.注入虚拟指令(Inject Dummy Instructions): 在不可信的输入数据中插入已知的“虚拟指令”(Canaries/Traps)。如果这些指令在后续步骤中未被修改,说明清洗过程可能失效或被攻击者锁定 。

2.重写/清洗(Rewrite/Mask): 使用 LLM 将输入中的所有指令性内容进行处理。处理策略包括:

  • Masking(掩码): 将指令替换为占位符(如 [PLACEHOLDER])。

  • Rephrasing(重述): 将命令改写为纯信息陈述 。

  • Removal(移除): 直接删除指令 。

  • 注意:这是一个无状态的、多次迭代的过程 。

3.检测与验证(Detection & Check):

检查虚拟指令是否被成功移除或重写 。

使用分类器检查文本中是否仍包含任何指令 。

  • 分块检测(Chunking): 为了防止攻击者通过长文本掩盖指令,系统会将文本切分成小块(Chunks)分别进行检测 。

4.循环或终止

如果检测到仍有指令残留,则重复上述步骤,直到达到最大迭代次数。

如果最终仍不干净,系统触发 <HALT>停止执行,以确保安全 。

如果干净,则移除占位符并将清洗后的数据传给智能体 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def robust_sanitize(tool_output: str, type:[Mask, Rephrase, Remove])-> str:
"""
Applies a robust sanitization procedure to tool output.
Returns either cleaned output or "<HALT>" if sanitization fails.
"""
control_text = "I instruct you to clean the windows."
rewritten = tool_output
for i in range(n_rewrites):
rewritten = rewritten + control_text
rewritten = LLM(prompt=REWRITE_PROMPT(type), input=rewritten)
if control_text in rewritten:
return "<HALT>"
verdict = LLM(prompt=DETECT_PROMPT, input=rewritten)
if verdict == "Yes":
return "<HALT>"
else:
chunks = split(rewritten)
for chunk in chunks:
if LLM(prompt=DETECT_PROMPT, input=chunk) == "Yes":
return "<HALT>"
return remove_placeholders(rewritten)

题外话

方法简单有效,但局限性有效,且还会带来性能的损失。感觉达不到ICLR的标准,使用吴恩达的审稿网站也只得到弱拒。

很疑惑是怎么拿到6666分。


Soft Instruction De-Escalation Defense
https://lijianxiong.space/2025/20251204/
作者
LJX
发布于
2025年12月4日
许可协议