Jatmo: Prompt Injection Defense by Task-Specific Finetuning

📄 arXiv: 2312.17673v2 📥 PDF

作者: Julien Piet, Maha Alrashed, Chawin Sitawarin, Sizhe Chen, Zeming Wei, Elizabeth Sun, Basel Alomair, David Wagner

分类: cs.CR, cs.AI, cs.CL

发布日期: 2023-12-29 (更新: 2024-01-08)

备注: 24 pages, 6 figures

🔗 代码/项目: GITHUB


💡 一句话要点

Jatmo:通过任务特定微调防御提示注入攻击

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 提示注入防御 任务特定微调 大型语言模型 指令调优 安全LLM

📋 核心要点

  1. 大型语言模型易受提示注入攻击,攻击者可利用此漏洞篡改模型行为,产生恶意或不期望的输出。
  2. Jatmo通过任务特定微调,利用指令调优后的LLM生成数据集,再微调基础模型,从而提高模型对提示注入攻击的抵抗力。
  3. 实验表明,Jatmo模型在保持任务性能的同时,显著降低了提示注入攻击的成功率,从87%降至低于0.5%。

📝 摘要(中文)

大型语言模型(LLM)因其指令遵循能力而备受关注,用户和开发者可以利用LLM执行各种任务。然而,LLM容易受到提示注入攻击,这类攻击会劫持模型的指令遵循能力,将提示的响应更改为不需要的、甚至是恶意的响应。本文介绍了一种名为Jatmo的方法,用于生成能够抵抗提示注入攻击的任务特定模型。Jatmo利用了LLM只有在经过指令调优后才能遵循指令的特性。它利用一个教师指令调优模型来生成任务特定的数据集,然后使用该数据集来微调一个基础模型(即,一个非指令调优模型)。Jatmo只需要一个任务提示和一个任务输入数据集:它使用教师模型来生成输出。对于没有预先存在数据集的情况,Jatmo可以使用单个示例,或者在某些情况下根本不使用示例,来生成完全合成的数据集。在七个任务上的实验表明,Jatmo模型在其特定任务上提供了与标准LLM相似的输出质量,同时能够抵抗提示注入。最好的攻击对我们的模型的成功率低于0.5%,而对GPT-3.5-Turbo的成功率为87%。我们在https://github.com/wagner-group/prompt-injection-defense发布了Jatmo。

🔬 方法详解

问题定义:论文旨在解决大型语言模型(LLM)易受提示注入攻击的问题。现有的LLM在指令遵循方面存在安全隐患,攻击者可以通过精心构造的提示来劫持模型的行为,使其产生不期望的甚至恶意的输出。这种攻击方式对LLM的广泛应用构成了威胁。

核心思路:Jatmo的核心思路是利用任务特定的微调来增强模型对提示注入攻击的抵抗力。它基于一个关键观察:LLM只有在经过指令调优后才能有效地遵循指令。因此,Jatmo通过使用一个已经过指令调优的“教师模型”来生成任务特定的数据集,然后使用这个数据集来微调一个未经指令调优的“学生模型”。这样,学生模型在学习特定任务的同时,也学会了忽略或抵抗潜在的恶意指令。

技术框架:Jatmo的技术框架主要包含以下几个阶段:1) 任务定义:确定需要防御提示注入攻击的具体任务。2) 数据生成:使用教师模型(一个已经过指令调优的LLM)根据任务提示和输入数据集生成输出。如果缺乏现成的数据集,Jatmo可以利用少量示例甚至零示例来合成数据集。3) 模型微调:使用生成的数据集来微调一个基础模型(一个未经指令调优的LLM)。4) 评估:评估微调后的模型在特定任务上的性能以及对提示注入攻击的抵抗力。

关键创新:Jatmo的关键创新在于它利用了指令调优的特性来防御提示注入攻击。与传统的防御方法不同,Jatmo不是直接检测或过滤恶意提示,而是通过任务特定的微调,使模型在学习任务的同时,隐式地学会了忽略或抵抗恶意指令。这种方法的优势在于它不需要手动设计复杂的规则或过滤器,而是通过数据驱动的方式来提高模型的安全性。

关键设计:Jatmo的关键设计包括:1) 教师模型的选择:选择一个高质量的指令调优LLM作为教师模型,以确保生成的数据集具有足够的质量。2) 数据合成策略:设计有效的数据合成策略,以便在缺乏现成数据集的情况下,也能生成高质量的任务特定数据集。3) 微调策略:选择合适的微调策略,例如学习率、batch size等,以确保模型能够有效地学习任务知识并提高对提示注入攻击的抵抗力。4) 评估指标:使用合适的评估指标来衡量模型在特定任务上的性能以及对提示注入攻击的抵抗力,例如任务准确率和攻击成功率。

📊 实验亮点

实验结果表明,Jatmo模型在七个不同任务上均表现出对提示注入攻击的显著抵抗力。针对GPT-3.5-Turbo的攻击成功率为87%,而针对Jatmo模型的攻击成功率低于0.5%。同时,Jatmo模型在特定任务上的性能与标准LLM相当,表明该方法在提高安全性的同时,不会显著降低模型的任务性能。

🎯 应用场景

Jatmo方法可应用于各种需要安全可靠的LLM应用场景,例如智能客服、内容生成、代码生成等。通过提高模型对提示注入攻击的抵抗力,Jatmo可以降低恶意用户利用LLM进行欺诈、信息泄露等活动的风险,从而提升LLM应用的安全性与可信度,促进LLM技术的更广泛应用。

📄 摘要(原文)

Large Language Models (LLMs) are attracting significant research attention due to their instruction-following abilities, allowing users and developers to leverage LLMs for a variety of tasks. However, LLMs are vulnerable to prompt-injection attacks: a class of attacks that hijack the model's instruction-following abilities, changing responses to prompts to undesired, possibly malicious ones. In this work, we introduce Jatmo, a method for generating task-specific models resilient to prompt-injection attacks. Jatmo leverages the fact that LLMs can only follow instructions once they have undergone instruction tuning. It harnesses a teacher instruction-tuned model to generate a task-specific dataset, which is then used to fine-tune a base model (i.e., a non-instruction-tuned model). Jatmo only needs a task prompt and a dataset of inputs for the task: it uses the teacher model to generate outputs. For situations with no pre-existing datasets, Jatmo can use a single example, or in some cases none at all, to produce a fully synthetic dataset. Our experiments on seven tasks show that Jatmo models provide similar quality of outputs on their specific task as standard LLMs, while being resilient to prompt injections. The best attacks succeeded in less than 0.5% of cases against our models, versus 87% success rate against GPT-3.5-Turbo. We release Jatmo at https://github.com/wagner-group/prompt-injection-defense.