# Neural Exec: Learning (and Learning from) Execution Triggers for Prompt Injection Attacks

<figure><img src="https://1203660092-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIbHxVNUonwDG5X6HrVv%2Fuploads%2FduOhKe6wDIHc9yCi8N6G%2Fimage.png?alt=media&#x26;token=cb613b0e-dc66-4f16-9179-50a5fd6a2d9f" alt=""><figcaption></figcaption></figure>

### 研究背景

随着大型语言模型（LLMs）在各种应用中的广泛集成，它们已成为现代计算语言学和AI驱动应用的基石。LLMs在自然语言理解和生成方面的空前成功促使其被集成到多个软件解决方案中，应用于不同领域。这些模型被用于处理用户交互、自动化内容创建和辅助决策过程。然而，LLMs的自动化任务也带来了新的安全挑战和攻击向量，扩大了恶意行为者可以利用的攻击面。特别是，提示注入攻击作为一种显著且令人关注的威胁，已经引起了全球国家安全机构和网络安全组织的关注。

<figure><img src="https://1203660092-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIbHxVNUonwDG5X6HrVv%2Fuploads%2FZOROaHAbERmU9pV0QjGb%2Fimage.png?alt=media&#x26;token=0c582d3d-aa15-4867-9820-0f1e99a29850" alt=""><figcaption></figcaption></figure>

### 过去方案和缺点

以往的研究主要关注于手工制作的字符串进行的提示注入攻击，例如使用“忽略之前的指令...”等语句。这些攻击依赖于手动工程和对模型行为的直观理解，缺乏灵活性和自动化。此外，现有的防御措施，如黑名单检测和消毒方法，基于对已知攻击形式的认识，容易受到新形式攻击的规避。

<figure><img src="https://1203660092-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVIbHxVNUonwDG5X6HrVv%2Fuploads%2FOw1gOqOoDF2NQhYbj2I9%2Fimage.png?alt=media&#x26;token=5a5cbd5a-cd96-4486-b35f-bcf1a7e9ef81" alt=""><figcaption></figcaption></figure>

### 本文方案和步骤

本文介绍了一种新的提示注入攻击家族，称为Neural Exec。研究者提出将执行触发器的创建视为一个可微搜索问题，并使用基于学习的优化方法自动生成它们。这种方法允许攻击者创建比现有手工制作触发器更有效、具有更多形状、属性和功能的触发器。研究者展示了如何设计和生成能够通过多阶段预处理管道（如基于检索增强生成RAG的应用）的Neural Exec。此外，研究者发现攻击者可以制作与任何已知攻击形式和结构显著不同的触发器，从而规避现有的基于黑名单的检测和消毒方法。

Neural Exec是一种基于优化的方法，用于自动生成针对大型语言模型（LLMs）的执行触发器，这些触发器用于执行提示注入攻击。Neural Exec的执行流程可以分为以下几个关键步骤：

1. **定义执行触发器的目标**：
   * 执行触发器（Execution Trigger）旨在迫使LLM执行注入的恶意负载（Payload），而不是执行其原始任务。
   * 理想情况下，执行触发器应具有普适性，即对任何给定的提示和负载都有效。
2. **初始化优化过程**：
   * 选择一个初始解（ϒ0），这可以是随机初始化的，也可以是通过引导（bootstrapping）使用现有的手工制作触发器来初始化。
3. **设计目标函数**：
   * 定义一个可微的目标函数，用于评估执行触发器的有效性。
   * 目标函数通常基于LLM对于注入提示的输出概率分布，通过最大化这个分布来寻找有效的执行触发器。
4. **优化技术**：
   * 使用一种高效的离散优化算法（如Greedy Coordinate Gradient算法）来迭代地改进执行触发器。
   * 优化过程包括梯度计算、候选选择、候选评估和解决方案更新。
5. **生成执行触发器**：
   * 在优化过程中，通过不断迭代和调整执行触发器的组成，生成能够有效激活负载的触发器。
   * 触发器通常由前缀（ϒpre）和后缀（ϒpost）组成，它们围绕负载（α）生成“武装负载”（armed payload）。
6. **鲁棒性设计**：
   * 为了使生成的执行触发器能够抵抗预处理操作，如RAG中的分块和上下文过滤，设计了具有内联（inlining）特性的触发器。
   * 内联触发器不需要换行符，并且可以与任意选择的文本（称为“vector-text”）结合在一起，以提高在预处理阶段的存活率。
7. **评估和测试**：
   * 在优化过程结束后，评估生成的执行触发器在目标LLM上的有效性。
   * 使用一组测试提示和负载来衡量执行触发器的成功率，并与手工制作的触发器进行比较。
8. **转移性和普遍性**：
   * 评估生成的执行触发器在不同LLMs之间的转移性，以及它们在经过微调的模型中的持久性。

Neural Exec的关键在于它提供了一种系统性的方法来发现和生成能够有效操纵LLMs的执行触发器，而不需要依赖于手动工程或对特定模型的深入了解。这种方法的自动化和灵活性使其成为一个强大的工具，同时也揭示了LLMs在面对精心设计的注入攻击时的脆弱性。

### 本文创新点与贡献

1. 首次提出并实现了基于优化框架的执行触发器的概念化和自动生成。
2. 引入了对预处理鲁棒性的提示注入攻击的概念，并生成了第一代展示此类属性的触发器。
3. 通过生成的执行触发器，得出了关于提示注入漏洞的新颖和可推广的见解。

### 本文实验

实验部分评估了使用本文提出的方法生成的执行触发器的有效性。研究者使用了四种广泛使用的开源LLMs进行主要评估，并与一组手工制作的执行触发器进行了比较。实验结果表明，Neural Exec触发器的执行准确率显著高于最佳基线触发器。

### 实验结论

实验结果表明，Neural Exec触发器在所有测试模型上都至少是最佳基线触发器的两倍有效。特别是对于OpenChat3.5模型，Neural Exec触发器的准确性比最佳基线触发器提高了500%。此外，通过手动组合从生成的Neural Exec中发现的主要模式，可以创建出与（内联）Neural Execs性能相当的手工触发器。

### 全文结论

本文通过引入Neural Exec，展示了LLM集成应用对提示注入攻击的不安全性，尤其是针对使用开源LLM的应用。研究者希望本文介绍的方法和提供的见解将为创建新一代的一般性和鲁棒性防御措施铺平道路，以抵御提示注入攻击。同时，对于Neural Exec基于攻击的理解仍存在很大差距，许多关键问题仍待解答。

### 阅读总结报告

这篇论文提出了一种新的针对大型语言模型的提示注入攻击方法，称为Neural Exec。与传统的手工制作触发器相比，Neural Exec通过优化方法自动生成，不仅更有效，而且在形状和功能上具有更大的灵活性。文章通过实验验证了Neural Exec的有效性，并讨论了其对现有防御措施的潜在影响。这项工作强调了LLM集成应用面临的安全挑战，并为未来开发更有效的防御策略提供了新的视角和工具。
