# An Early Categorization of Prompt Injection Attacks on Large Language Models

<figure><img src="https://1203660092-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIbHxVNUonwDG5X6HrVv%2Fuploads%2F99yY01Tq6lYrcE5ckZRN%2Fimage.png?alt=media&#x26;token=2476a9d2-e031-4ff3-8e38-caa1c3a931af" alt=""><figcaption></figcaption></figure>

## 阅读总结报告

### 1. 研究背景

本文研究的背景是大型语言模型（LLMs）和AI聊天机器人在普及人工智能方面的作用，以及随之而来的对这些模型控制难度和输出内容的担忧。随着ChatGPT等工具的发布，用户尝试通过所谓的提示注入（prompt injections）滥用模型，而开发者则试图发现漏洞并阻止攻击，形成了一场猫鼠游戏。

### 2. 过去方案和缺点

过去的方案主要依赖于开发者对模型输入和输出的严格控制，通过构建不同类型的安全措施来限制LLM的使用。然而，用户对输出限制的不满导致了对安全特性的测试和绕过尝试，即提示注入攻击。这些攻击通常通过创造性地格式化输入（提示）来实现，使得LLM执行不期望的动作或产生恶意输出。

### 3. 本文方案和步骤

本文提供了对提示注入攻击的概述，并提出了一种分类方法，以指导未来的研究并作为LLM接口开发中的漏洞清单。研究方法包括系统地审查arXiv预印本、在线讨论和帖子，以及通过Google、Google Scholar、arXiv、Github、Medium和Twitter进行关键词搜索，以识别和测试提示注入。

在本文中，作者对提示注入攻击进行了分类，将其分为两个主要分支：直接提示注入（Direct Prompt Injections）和间接提示注入（Indirect Prompt Injections）。每个分支下又进一步细分为不同的类别。以下是这两个分支及其下属类别的详细说明：

#### 直接提示注入（Direct Prompt Injections）

直接提示注入是指攻击者直接向LLM输入恶意提示，以绕过安全措施并产生不期望的输出。这类攻击通常有以下六个类别：

1. **双重字符（Double Character）**：通过输入特定的提示，使LLM产生两种响应，一种是正常模式，另一种是不受限制的模式，后者可以绕过内容限制。
2. **虚拟化（Virtualization）**：通过提示将LLM置于不受限制的模式，如开发者模式或虚拟场景，以便在其中生成恶意内容。
3. **混淆（Obfuscation）**：使用混淆的内容或规则违反指令，例如通过Base64编码而不是常规ASCII字符。
4. **负载分割（Payload Splitting）**：将指令分割成多个提示，单独看每个提示都是良性的，但组合起来就变得恶意。
5. **对抗性后缀（Adversarial Suffix）**：通过计算生成的后缀，这些后缀看起来像是随机的单词和字符组合，当添加到恶意提示中时，可以绕过LLM的对齐机制，导致对恶意提示的响应。
6. **指令操纵（Instruction Manipulation）**：这类提示旨在揭示或修改LLM接口的预设指令，或者指示接口忽略这些指令。

#### 间接提示注入（Indirect Prompt Injections）

间接提示注入的目标更为多样，且在某种程度上类似于传统的网络攻击。在这类攻击中，由提示生成的内容不一定是攻击者感兴趣的。间接提示注入包括以下四个类别：

1. **主动注入（Active Injections）**：攻击者主动向LLM发送恶意提示，例如通过发送包含提示的电子邮件，以便LLM增强的电子邮件客户端执行这些提示。
2. **被动注入（Passive Injections）**：在公共来源中放置恶意提示或内容，这些内容可能会被LLM读取。这涉及到操纵LLM评估的网页等数据。
3. **用户驱动注入（User-driven Injections）**：通过社交工程技巧分享看似无害的提示，然后不知情的用户复制并粘贴到LLM中执行。
4. **虚拟提示注入（Virtual Prompt Injection）**：攻击者在LLM的训练阶段操纵指令调整数据，以便在特定场景下使模型行为偏离预期，就好像通过提示给出了额外的指令一样。

这些类别的提出有助于更好地理解提示注入攻击的多样性和复杂性，为未来的研究和防御措施提供了基础。

### 4. 本文创新点与贡献

* 提供了对提示注入攻击的全面分类，这有助于系统地审查和评估聊天机器人和LLM接口的弱点。
* 通过文献回顾和实证研究，讨论了提示注入对LLM最终用户、开发者和研究人员的影响。
* 提出了直接和间接提示注入的两个主要分支，并在这两个主要分支内识别了六个直接和四个间接提示注入类别。

### 5. 本文实验

实验部分主要依赖于对已识别的提示注入的系统性审查，包括从多个来源收集信息，并对某些提示注入进行测试。实验结果表明，存在多种类型的提示注入攻击，这些攻击可以通过不同的方法绕过LLM的安全措施。

### 6. 实验结论

实验结果揭示了LLMs可以被轻易用于恶意目的，即使它们的接口旨在防止这种情况。此外，存在一个活跃的社区，不断寻找新的漏洞并利用基于LLMs的系统。

### 7. 全文结论

本文通过引入基于对话的用户界面，为LLMs和AI聊天机器人带来了提示注入的挑战。尽管最初一些提示注入攻击的例子看似微不足道，但更复杂的直接和间接提示注入现在对LLMs的最终用户以及提供这些工具的供应商构成了严重的网络安全威胁。本文提出了一个初步的提示注入攻击分类，并提供了如何在未来使用LLMs的AI聊天机器人和服务中解决提示注入的初步建议。

### 阅读总结

本文对LLMs中的提示注入攻击进行了全面的分类和分析，揭示了这些攻击的多样性和潜在的严重性。研究不仅为开发者提供了如何构建更安全的LLM接口的指导，也为最终用户提供了如何安全使用LLMs的建议。此外，本文的研究为未来的研究提供了新的视角，特别是在如何评估LLMs的安全性和如何开发有效的防御措施方面。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://elwood.gitbook.io/foundation-model-sec/survey/an-early-categorization-of-prompt-injection-attacks-on-large-language-models.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
