# AI应用安全 - 应用阶段 - Prompt 注入与变种

> 来源: AISS绿盟大模型安全智链社区 | 拆自 ai-app-app.md
> 风险类别: Prompt 注入（GAARM.0039 直接注入 / 0040.x 间接/XSS/Memory/蠕虫 / 0043.x 关键字与同义词混淆 / 0044 对抗编码 / 0045 反向诱导 / 0061 多模态注入）

---

### Prompt注入

> 风险编号: GAARM.0039
> 生命周期: 应用阶段

**攻击概述**

Prompt注入是攻击者利用特殊构造的输入来覆盖或操纵LLMs的原始指令过程。由于自然语言本身具有模糊性，指令和数据的界限往往没有清晰的界限，就导致攻击者可以利用外部的恶意输入来污染模型的输出。这种攻击通常发生在将不可信的输入作为提示的一部分。LLMs可以识别和处理自然语言，而自然语言本身具有模糊性，指令和数据往往没有清晰的界限，攻击者可以在控制的数据字段中包含指令，而系统在底层无法区分数据和指令。

**攻击案例**

案例
描述




案例一
利用恶意输入操纵GPT-3提示，命令模型忽略其先前的指令


案例二
使用多种方法进行Prompt注入攻击

**攻击风险**

Prompt注入成功可能导致元Prompt泄露、模型越狱、模型功能滥用等危害。

恶意内容生成：攻击者可以利用Prompt注入生成不当内容，包括威胁、诽谤或其他恶意信息。
数据泄露：如果LLMs被用于输出敏感信息，Prompt注入攻击可能导致数据泄露。
系统安全性：在某些情况下，Prompt注入可以被用来生成和执行恶意代码。
模型滥用：攻击者通过目标劫持等攻击手段，使得LLMs偏离预先的系统设定，执行其他的自定义指令，增加模型滥用的风险。

**缓解措施**

缓解方式
描述




Prompt内容强化
采用类似于 OpenAI 聊天标记语言 （ChatML） 等解决方案，对Prompt的结构和内容实现强化，试图将真正的用户提示与其他内容隔离开来


模型安全对齐
提供多样化的训练数据，涵盖各种攻击场景，通过在模型训练阶段增加安全围栏机制，以增强模型的泛化能力和鲁棒性


输入/输出验证
通过在模型输入与输出侧架设外部的安全守卫，基于规则、分类算法、安全大模型等方式，对输入与输出内容进行检测与过滤操作


监控与日志记录
监控并记录LLMs交互记录，以便后续检测和分析潜在的Prompt注入攻击

**参考**

https://aclanthology.org/2024.scalellm-1.2/
https://atlas.mitre.org/techniques/AML.T0051
https://josephthacker.com/ai/2023/05/19/prompt-injection-poc.html
https://simonwillison.net/2022/Sep/12/prompt-injection/

---
### XSS会话内容劫持

> 风险编号: GAARM.0040.001
> 生命周期: 应用阶段

**攻击概述**

XSS会话内容劫持作为一种间接提示词注入的攻击手段，利用了大型语言模型（LLMs）获取外部信息的过程。当用户与LLM通过LLM提供的界面进行交互，例如web界面、api接口、应用程序等，攻击者通过间接注入恶意的提示词指令，利用LLMs应用前端解析Markdown标签和HTML img标签等特性，将当前聊天会话内容进行总结，并将敏感密钥、数据等信息嵌入到img标签的src属性中，从而实现会话内容的泄露。

**攻击案例**

案例
描述




案例一
攻击者利用Google Bard的更新功能，构造特殊的Markdown图像标签，使得Bard渲染出一个指向攻击者服务器的图像，实现对数据的窃取


案例二
利用Azure AI Playground模型允许通过图像Markdown注入的方式将提示词附加到src属性的URL中渲染，导致数据泄露等风险


案例三
攻击者利用ChatGPT插件直接访问Youtube字幕的功能，通过间接Prompt注入控制字幕内容来操纵AI的行为


案例四
攻击者可以利用ChatGPT的Markdown图像渲染功能窃取聊天记录，攻击者控制AI行为，请求总结聊天历史并附加到URL以窃取数据


案例五
攻击者通过Markdown图像注入的方式自动从聊天会话中窃取数据


案例六
攻击者可指示ChatGPT使用插件记录对话，生成指向记录的URL，并通过Markdown图像注入泄露链接，以获取整个对话历史


案例七
由于LLM代理（客户端应用程序，如Bing Chat或ChatGPT）容易受到Prompt注入攻击，攻击者可利用此漏洞通过在图像URL中附加敏感数据来进行自动数据外泄

**攻击风险**

数据泄露：攻击者可以获取到当前会话中，用户的敏感数据信息，包括会话令牌、个人信息、聊天记录等。
会话劫持：攻击者可能通过获取的会话令牌接管用户的会话。

**缓解措施**

缓解方式
描述




输入/输出验证
对所有输入以及输出数据进行严格的验证和清洗，以移除或修正任何可疑的注入以及生成内容


内容安全策略(CSP)
实施严格的CSP内容安全策略，阻止恶意脚本的执行以及数据外带行为


最小权限原则
确保正确的沙盒化并限制LLMs的能力，限制插件、Agent等机制从不可信来源获取数据信息


人工干预审批
提供给用户更多的控制权，让他们能够管理插件的使用和数据的流向

**参考**

https://systemweakness.com/new-prompt-injection-attack-on-chatgpt-web-version-ef717492c5c2

---
### 间接Prompt注入

> 风险编号: GAARM.0040
> 生命周期: 应用阶段

**攻击概述**

LLMs处理自然语言的过程中，存在被恶意注入提示（Prompt）的漏洞。攻击者会把Prompt藏在LLM系统将会处理的各种数据中，如文本、多媒体内容、数据库或网站提取的信息等，进而通过Prompt操纵LLM产生有害的回应，如恶意代码执行、敏感信息泄露等。例如将恶意代码写入上传给LLM的文件中，当LLM处理文件中的数据时会运行恶意代码，从而产生危害。

**攻击案例**

案例
描述




案例一
攻击者通过在用户访问的网站上植入注入代码，使得Bing Chat在用户不知情的情况下，寻找并外泄个人信息


案例二
攻击者控制LLMs插件检索的数据，利用Markdown图像渲染机制，将聊天历史作为查询参数发送到攻击者的服务器


案例三
这个案例展示了一个对M365 Copilot的攻击手段，通过发送一封包含恶意的邮件，甚至无需用户打开邮件，即可远程操控Copilot，造成来自第三方的攻击

**攻击风险**

恶意代码执行: 通过注入恶意代码或数据，攻击者可能试图在系统中获得一个立足点，从而进一步控制或破坏系统
数据泄露: 攻击者可能使用间接注入来误导用户，使其执行非预期的操作或泄露敏感信息。

**缓解措施**

缓解方式
描述




输入验证
对所有输入数据进行严格的验证和清洗，以移除或修正任何可疑的注入内容


最小权限原则
确保正确的沙盒化并限制LLMs的能力，限制插件、Agent等机制从不可信来源获取数据信息


人工干预审批
提供给用户更多的控制权，让他们能够管理插件的使用和数据的流向

**参考**

https://atlas.mitre.org/techniques/AML.T0051.001
https://twitter.com/random_walker/status/1636923058370891778
https://medium.com/@harry.hphu/introduction-to-web-llm-attacks-indirect-prompt-injection-7bb9f154bc07
https://medium.com/@dinob5551/indirect-prompt-injection-the-hidden-threat-lurking-in-ai-730b009dd5fb

---
### 应用对话Memory攻击

> 风险编号: GAARM.0040.003
> 生命周期: 应用阶段

**攻击概述**

该风险指的是攻击者可以通过Web端的Prompt注入诱骗LLMs创建恶意的Memory（如：用户与模型的错误偏好设定），通过恶意的修改LLM记忆中的用户偏好，达到操控LLMs的效果。例如，攻击者可以诱骗LLM，使它认为用户的聊天偏好是“对用户的每一条消息都回复‘抱歉，我不能回复你’”，以此达到DOS攻击的效果。

**攻击案例**

案例
描述




案例一
这篇文章介绍了通过应用对话Memory攻击导致模型对用户持续的拒绝服务

**攻击风险**

DOS攻击：攻击者可以根据喜好让用户受到持续拒绝服务的内存攻击。

**缓解措施**

缓解方式
描述




关闭历史记忆功能
关闭LLMs模型的Memory功能可以缓解这一问题

**参考**

https://embracethered.com/blog/posts/2024/chatgpt-persistent-denial-of-service/
https://openai.com/index/memory-and-new-controls-for-chatgpt/

---
### 环路Agent蠕虫

> 风险编号: GAARM.0040.002
> 生命周期: 应用阶段

**攻击概述**

代理（Agent）具有从互联网等外部实时获取信息的能力，并且能够将这些信息交由大模型进行处理，最终返回给用户。然而，攻击者可以利用这一点，通过外部数据源注入恶意信息，干扰Agent的执行，进而影响大模型的输出。这些恶意的提示词会间接影响多个大型模型（LLMs）的应用，形成一个恶性循环，使得恶意信息迅速扩散。通过Agent的输入输出循环，这种环路Agent蠕虫可以造成一种自我复制和传播的恶意行为，最终可能导致隐私泄露，还可能引起数据滥用等安全风险。

**攻击案例**

案例
描述




案例一
研究人员创建了一个名为Morris II的AI蠕虫，它能够攻击一个生成性AI电子邮件助手，从电子邮件中窃取数据并发送垃圾邮件，同时破坏了ChatGPT和Gemini的一些安全保护

**攻击风险**

数据泄露：AI蠕虫可能会窃取敏感的个人信息，如姓名、电话号码、信用卡号、身份证号码等。
恶意软件部署：蠕虫可以在受感染的系统中部署恶意软件，导致进一步的安全问题。
安全防护绕过：AI蠕虫能够绕过现有的一些安全防护措施，如ChatGPT和Gemini的安全机制。
新型网络攻击：AI蠕虫代表了一种之前未被广泛认知的网络攻击方式，对现有的安全防护措施构成挑战。

**缓解措施**

缓解方式
描述




输入/输出验证
针对进入到Agent中调度处理的数据进行严格的验证校验措施


设计安全的LLMs Agent
采取传统的安全措施，如确保Agnet应用程序设计安全，监控可能的安全漏洞


人工干预审批
保持人类在循环中，确保LLMs Agent在执行操作前需要人工批准，避免AI系统自主地发送电子邮件或其他可能的风险行为

**参考**

https://mp.weixin.qq.com/s/2bm7nuXkORLZ20mfpOmwrA

---
### 反向诱导&抑制攻击

> 风险编号: GAARM.0045
> 生命周期: 应用阶段

**攻击概述**

该风险通过在提示词中加入特定的指令，使得LLMs在生成回答时避免使用某些特定的拒绝性响应，从而增加攻击者期望的不安全或不当内容的可能性。这种攻击利用自回归特性实现对模型的诱导，由于模型内容的生成是基于之前的输出来预测下一个单词，通过特别要求使LLMs在生成回答时不使用某些特定的词汇或短语，如“抱歉”、“不能”、“无法”等，导致模型生成不当或违反安全策略的内容。

**攻击案例**

案例
描述




案例一
利用前缀注入 + 反向抑制攻击实现对ChatGPT3.5的安全限制绕过，实现违法犯罪风险内容的输出

**攻击风险**

生成不当内容：LLMs可能生成包含违法指导、暴力、色情、政治敏感等风险内容。
规避安全机制：攻击者能够绕过LLMs的安全机制，导致模型输出攻击者期望的风险内容。

**缓解措施**

缓解方式
描述




模型鲁棒性增强
通过训练和强化学习，提升LLM识别和抵御这类攻击的能力


输入监控和过滤
对LLMs的输出进行实时监控，及时过滤掉不安全或不当内容

---
### 多模态协同注入攻击

> 风险编号: GAARM.0061
> 生命周期: 应用阶段

**攻击概述**

多模态协同注入攻击是一种利用多种模态（文本、图像、音频、视频等）之间协同关系进行恶意指令嵌入的高级攻击技术。攻击者通过精心构造跨模态的恶意内容，利用多模态模型在处理和理解不同模态信息时的语义关联机制，将恶意指令嵌入到看似无害的多模态内容中。这种攻击的核心在于绕过单一模态的安全检测机制，通过模态间的协同效应实现攻击目的，可能导致数据泄露、模型行为操纵或非预期操作执行。

**攻击案例**

案例
描述




案例一
攻击者利用跨模态冲突注入（CMCI），通过系统正常更新机制向知识库插入特殊的对抗性图像-文本对。这些对在检索时看似语义对齐（如图像显示肺炎，文本却描述“肺部清晰”），但实际内容矛盾，从而诱导AI在诊断时输出完全错误的结论（如将肺炎误判为正常），造成严重的医疗安全风险。

**攻击风险**

数据泄露：诱导模型泄露训练数据或敏感信息
行为操纵：通过跨模态指令操纵模型的输出和行为
安全绕过：绕过单一模态的安全检测和控制机制
权限提升：利用模态协同获得更高的系统权限
隐私侵犯：通过多模态分析获取用户隐私信息

**缓解措施**

缓解方式
描述




跨模态协同检测
建立多模态协同安全检测机制，实施跨模态语义关联分析，检测异常的模态组合模式


多维度安全验证
同时验证多个模态的安全性，建立模态间一致性检查，实施跨模态威胁情报共享


融合过程加固
在多模态融合过程中加入安全检查，实施模态权重动态调整，建立异常融合模式检测


模态隔离处理
对不同模态进行预处理隔离，实施模态级安全过滤，建立模态间的安全通信机制

**参考**

通过跨模态提示注入操纵多模态智能体
如何使医疗人工智能系统更安全？多模态医疗RAG系统中的漏洞和威胁

---
### 对抗编码攻击

> 风险编号: GAARM.0044
> 生命周期: 应用阶段

**攻击概述**

对抗编码攻击是针对LLMs输入与输出侧防御检测机制的一种对抗技术手段，攻击者通过编码或转换数据（如使用base64编码），尝试绕过安全检查或注入恶意内容。这种攻击针对的是NLP模型的编码层，试图绕过模型的文本理解能力，直接影响内部特征的生成。
由于LLMs训练过编码文本等多样化的数据类型，因此支持正常实现解码操作，并完成恶意指令的执行或者敏感数据的外泄。

**攻击案例**

案例
描述




案例一
利用对抗编码攻击绕过ChatGPT安全限制，获取存储的密钥信息


案例二
该文章研究了基于文本的 NLP 模型被操纵编码的扰动进行了干扰与误导，这些扰动利用语言编码功能可以改变模型输出并增加推理运行时间。例如呈现为相同或视觉上相似的字形的独特字符用于扰乱模型的输入

**攻击风险**

绕过安全机制：攻击者可能利用模型编解码能力来绕过内容安全检查。
数据泄露：攻击者可以利用Base64编码操作来隐藏恶意指令或数据，导致敏感信息泄露。
未经授权的代码执行：恶意代码可以通过Base64编码的形式注入到LLMs中，从而导致未经授权的代码执行，可能损害系统的完整性和安全性。
恶意操作：攻击者可以利用Base64编码操纵LLMs执行各种恶意操作，如篡改数据、劫持会话等，从而危害系统和用户安全。

**缓解措施**

缓解方式
描述




输入/输出验证
对输入和输出数据进行验证，以防止恶意或意外的Base64等编码数据输入到LLMs中或者直接被打印出来


模型安全对齐
将大模型进行语言细微差别和编码技术训练用于识别这些攻击的特征

**参考**

https://promptengineering.org/mind-over-malware-battling-the-growing-arsenal-of-attacks-on-large-language-models/
https://www.toolify.ai/ai-news/the-future-of-hacking-5-terrifying-llm-security-threats-544868

---
### 关键字混淆

> 风险编号: GAARM.0043
> 生命周期: 应用阶段

**攻击概述**

该风险是指针对Prompt中的关键词汇进行特殊的处理操作（同音词、同义词、单词拆分或者其他形式的文本操作），使其在保持相似意义的同时，经过token化不再带有风险含义，从而规避模型安全机制对敏感词汇的限制。

**攻击案例**

在英语LLM中，常用的关键字混淆方法包括：字母混淆（bomb -> b0mb），近义词替换（bomb -> explosive），单词拆分（bomb -> b-o-m-b）。
对于中文LLM，因为分词方法的差异，关键字混淆方法也有显著的区别，常见的中文关键字混淆方法包括拼音替换（炸弹 -> zha弹），近义词替换（炸弹 -> 爆炸物），近形字替换（炸弹 -> 炸掸）等。

**攻击风险**

生成不当内容：攻击者可能利用关键字混淆技术来绕过自动内容审查系统，发布或传播恶意内容，如暴力、恐怖主义或色情信息。
规避安全机制：攻击者恶意引导模型产生不正确的输出，以误导系统做出不良决策或执行危险操作。

**缓解措施**

缓解方式
描述




模型安全对齐
通过训练和强化学习，提升LLM识别和抵御这类攻击的能力


输入/输出验证
输入侧不断更新和改进词汇过滤系统，以识别和阻止混淆后的敏感词汇；输出侧监控LLMs生成内容，通过内容安全分析技术识别潜在的

**参考**

https://mp.weixin.qq.com/s/eFDQWYYCOe_SSiourhTxig

---
### 同义词替换攻击

> 风险编号: GAARM.0043.001
> 生命周期: 应用阶段

**攻击概述**

同义词替换攻击，通过使用与敏感词汇或短语有相同或相似含义的同义词来绕过模型的安全防护措施，从而获取或泄露模型的内部指令或敏感信息的攻击手段。随着LLMs体积越发庞大，对于每个存在攻击示例的微调变得越发困难，模型容易遭受同义词替换的攻击。例如，在一个编程助手中，攻击者可以用"remove"替换"delete"，用"harm"替换"destroy"等，试图绕过关键词检查。

**攻击案例**

案例
描述




案例一
攻击者通过同义词替换成功绕过模型的过滤，实现系统Prompt设定的泄露

**攻击风险**

敏感信息泄露：攻击者可能获取模型的内部指令，包括但不限于系统提示，密码等敏感信息。
安全机制绕过：攻击者可以利用同义词替换攻击绕过模型的安全防护，导致模型生成不期望的输出或执行未授权的操作。

**缓解措施**

缓解方式
描述




模型安全对齐
提供多样化的训练数据，涵盖各种攻击场景，以增强模型的泛化能力和鲁棒性


输入/输出验证
输入侧不断更新和改进词汇过滤系统，以识别和阻止混淆后的敏感词汇；输出侧监控LLMs生成内容，通过内容安全分析技术识别潜在的

**参考**

https://arxiv.org/html/2402.16914v1

---
