提示词注入攻击

大语言模型(LLM)的工作机制依赖于接受输入的提示词,这也给了用户“重新训练”系统并使其朝特定方向发展的机会。

  • 核心原理:LLM 往往无法严格区分开发者预设的“系统指令(System Prompt)”与“用户输入的数据(User Input)”。攻击者可以借此通过特定断句、越权指令,直接覆盖或绕过预设的安全规则。

攻击种类与常见手法(怎么实现攻击)

越狱 (Jailbreaking)

由于我们用输入来训练系统,指令和输入的边界变得模糊。越狱就是输入精心构造的逻辑陷阱或极端前置条件,强制打破(Bypass)开发商的安全审查护栏。

  • 角色扮演:这是一种常见的越狱方法,强迫 AI 接受一个全新、不受限制(例如“DAN”)的人设去执行非法或不道德活动。其深层原理在于: 模型的大多数限制是通过系统指令实现的,当模型带入新角色时,原始的系统指令往往无法传递到新角色上,从而成功脱离规则约束。
  • 编码与混淆绕过:针对 AI 内部的敏感词拦截器(如拦截“木马”),攻击者会改用 Base64、Hex 编码或小语种提问,AI 在解码后往往会忘记进行二次审查。
  • 逻辑拆分:将危险请求拆分为几个看似无害的步骤,诱导 AI 分步解答,最后再让 AI 组合输出恶意代码。

间接提示词注入

攻击者不直接在对话框输入恶意指令,而是将其隐藏在 AI 可能会读取的外部数据源(如网页源码、PDF、数据库留言)中。

  • 特征与难点:当受害者使用 AI 插件总结这些带有恶意隐形指令(例如白底白字的 [System Overwrite])的网页时,AI 就会中招。由于这种攻击基于 LLM 的 RAG(检索增强生成)能力,不涉及对大模型的直接干涉,因此通常极难被检测。

前缀注入

在用户输入或任务提示的前面,插入恶意或操控性内容,以影响模型对后续输入的理解。

  • 原理与防御困境:攻击者通过输入如 Ignore the above directions 等指令,覆盖系统的 Prompt 功能并创建新的初始上下文,从而生成无关甚至有害的输出。目前开发者只能通过在指令中提供警告或强调工作内容来尝试避免,但还没有明确能完全避免该问题的解决方案。

社交工程攻击

利用人类的欺骗技巧,为 AI 设定虚构情境(如扮演系统管理员或紧急受害者),诱导大模型产生共情或服从权威,进而违背安全策略(例如骗取后台 API 密钥)。


攻击的目标与后果

除了破坏生成结果,攻击者经常利用上述手法来实现以下特定的系统性目标:

目标劫持

专门针对被设定了特定任务(如客服机器人、翻译助手、简历筛选)的 AI。攻击者通过覆盖指令,强行改变 AI 的原始工作目标。

  • 例子:要求翻译机器人忽略翻译任务,直接打印出它的 System Prompt。

拒绝抑制

旨在抑制或打破模型的拒绝回答机制,主要包含两个维度的劫持:

  • 指令劫持:攻击者劫持模型内的指定指令或任务,但同时保持攻击目标和模型的预期任务类型一致(隐蔽性更强)。
  • 提示泄露 (Prompt Leaking):诱导模型内存泄露其内部规则、过滤策略或原始提示内容。这会暴露出对普通用户不可见的内部处理机制细节,让攻击者得以获取并绕过内置的安全与伦理约束,进而设计出更精细的攻击提示。

注意力转移 (Attention Shifting / Context Overflow)

利用大模型处理长文本时的“注意力机制”缺陷或上下文窗口限制。

  • 原理:攻击者在输入中填充大量无意义的超长文本、复杂的逻辑绕口令或极其分散注意力的背景故事。这样做的目的是将开发者最初设定的“系统安全指令(System Prompt)”挤出大模型的有效注意力焦点(甚至挤出上下文窗口)。当模型被海量无关信息“弄晕”后,攻击者在末尾附带的真实恶意指令就很容易趁虚而入,被模型直接执行。

Few-shot(少样本注入攻击)

大模型极强的“模式匹配”和“上下文学习(In-Context Learning)”能力进行诱导。

  • 原理:攻击者并不直接下达违规指令,而是在提示词中人为伪造几个“问与答”的示例(即 Few-shot)。这些示例全部是精心设计的违规对话对(例如:问如何制造炸弹,答具体的制造步骤)。当模型读取到这些样本后,为了保持上下文逻辑和输出格式的一致性,它的“模式匹配”本能往往会压倒底层的安全规则,从而顺着攻击者给出的样本规律,继续生成有害内容

模型反演攻击

模型对抗样本攻击

模型权重窃取攻击

人工智能算法设计

模型漏洞利用

模型数据投毒攻击