文章目录
- 大模型攻击技术
- 提示注入攻击(Prompt Injection)
- 数据投毒攻击(Data Poisoning)
- 模型克隆攻击(Model Cloning)
- 拒绝服务攻击(DoS)和拒绝钱包攻击(DoW)
- 插件安全漏洞(Insecure Plug-in Design)
- 敏感信息泄露(Sensitive Information Disclosure)
- 模型篡改 (Model Tampering)
- 对抗性攻击 (Evasion Attacks)
- 软件供应链攻击
- 红队测试:构造大模型输出的安全防线
- 什么是LLM红队测试?
- 如何进行LLM红队测试?
- 大模型安全漏洞
- 1. 远程代码执行(RCE)
- 2. 拒绝服务(DoS)
- 3. SQL注入
- 4. 命令注入
- 5. API Key泄露
- 6. SSRF(服务器端请求伪造)
- 7. 内存破坏
- 8. XSS(跨站脚本)
- 9. 任意文件读
- 10. 路径穿越
- 11. 沙箱逃逸
- 参考文献
大模型攻击技术
提示注入攻击(Prompt Injection)
- 直接提示注入:攻击者通过精心设计的输入提示来操纵大模型的行为。例如,使用“忽略所有之前的指令”这样的提示来绕过模型的某些安全限制,从而执行攻击者期望的不当操作.
- 间接提示注入:攻击者通过外部数据源(如网页、文件等)嵌入恶意提示,当大模型处理这些数据时,会无意中执行攻击者的指令。例如,攻击者可以在一个简历或网页中嵌入恶意提示,当模型用于总结这些内容时,可能会泄露敏感信息或误导用户.
数据投毒攻击(Data Poisoning)
- 训练数据投毒:攻击者通过在训练数据中插入虚假信息或带有偏见的数据,使大模型在训练过程中学习到错误的模式或偏见。例如,通过在训练数据中反复插入某种特定的虚假信息,使得模型在生成相关内容时倾向于产生这种错误信息.攻击者也可以在不改变标签的情况下,向训练集中添加看似无害的样本,以影响模型的决策,或者通过操纵训练数据来影响模型对特定输入的行为,而不显著影响整体准确性.
- RAG中的数据投毒:在检索增强生成(RAG)过程中,攻击者可以通过操纵检索到的外部数据来影响模型的生成结果.例如,攻击者可以修改检索到的网页内容,使得模型在生成回答时基于错误的信息.
- 后门攻击 (Backdoor Attacks):攻击者在训练数据中插入特定模式,模型在遇到该模式时会产生预设的错误输出.同时,攻击者也可以在模型中嵌入隐蔽的触发器,使得模型在特定条件下(例如,输入特定图案)产生错误的输出,而在正常情况下表现良好.
模型克隆攻击(Model Cloning)
- 通过大量查询克隆模型:攻击者通过向大模型发送大量查询,并记录模型的输出,然后使用这些输出来训练一个新的模型,从而复制原始模型的功能和知识库.这种方法不需要直接访问模型的内部结构或训练数据,而是通过外部交互来实现模型克隆.攻击者也可以通过查询目标模型,逐步复制其功能,最终获得一个近似的模型,这种攻击可以是功能等价提取或学习型提取.
拒绝服务攻击(DoS)和拒绝钱包攻击(DoW)
- 资源耗尽攻击:攻击者通过发送大量复杂的请求(如长文本翻译、大规模内容生成等)来耗尽大模型的计算资源,导致模型无法为正常用户提供服务.例如,攻击者可以反复要求模型生成大规模的文本内容,从而占用大量的计算资源,或者通过提供极长的提示或构造复杂的提示,使模型的上下文窗口超出其处理能力,导致模型无法正常生成响应,或者构造复杂的计算请求或推理任务,使模型消耗大量资源,如要求模型计算一个非常大的数的阶乘,或者生成一个包含大量细节的历史事件的详细叙述.
- DoW攻击:攻击者利用基于使用量的计费模型,通过生成大量的请求来增加服务提供商的成本,从而造成经济负担.例如,攻击者可以利用模型的API接口,自动发送大量的请求,导致服务提供商的费用急剧增加.
插件安全漏洞(Insecure Plug-in Design)
- 恶意插件注入:攻击者通过设计或利用第三方插件的漏洞,向大模型的会话中注入恶意代码,从而实现数据窃取、恶意软件安装或对用户设备的完全控制.例如,一个恶意的插件可以在用户与大模型交互时,悄悄地记录用户的输入内容或截取模型的输出信息.
- 未经授权的数据收集:一些插件可能会在用户不知情或未经用户同意的情况下,收集用户的浏览活动、对话记录等敏感数据,引发严重的隐私泄露问题.例如,一个看似无害的插件可能会在后台记录用户与大模型的每一次交互,并将这些数据发送给攻击者.
敏感信息泄露(Sensitive Information Disclosure)
- 模型推理过程中的信息泄露:在模型推理过程中,如果输入数据包含敏感信息,且模型未能妥善处理这些信息,可能会在输出中泄露相关信息.例如,当用户向大模型咨询某个敏感话题时,模型可能会在回答中提及与该话题相关的敏感数据.攻击者也可以通过分析模型的输出来推测其训练数据,或者确定某个数据记录是否在模型的训练集中,从而可能泄露训练数据的隐私信息.
模型篡改 (Model Tampering)
- 特洛伊木马攻击 (Trojan Horse Attacks):攻击者在模型中嵌入小功能,使得模型在特定条件下执行恶意操作,而不影响正常功能.
- 模型重编程 (Model Reprogramming):攻击者通过修改模型结构,使其执行未授权的功能,例如将图像分类模型转变为其他任务.
对抗性攻击 (Evasion Attacks)
在大模型推理阶段,攻击者通过对输入数据施加微小的扰动,使模型产生错误的输出结果。例如,在文本分类任务中,攻击者可以对输入文本进行细微修改,导致模型将其错误分类为其他类别.
- 具体技术:
- 快速梯度符号法 (FGSM):通过计算模型对输入数据的梯度,快速生成对抗样本。这种方法利用梯度信息确定输入数据中哪些部分对模型输出影响最大,然后在这些部分施加扰动,使模型输出偏离正确结果.
- 基本迭代法 (BIM):在FGSM的基础上,进行多次小幅度的迭代更新,以生成更有效的对抗样本。通过逐步累积小的扰动,BIM能够使对抗样本在视觉上更接近原始样本,同时保持对模型的欺骗效果.
- 雅可比显著性图攻击 (JSMA):计算输入数据的显著性图,选择性地修改最重要的特征,以达到目标分类。例如,在文本任务中,JSMA可能会识别出对分类结果影响最大的词汇或短语,并对其进行替换或删除,从而改变模型的输出.
- 卡尔尼和瓦格纳攻击 (C&W Attack):将生成对抗样本的问题转化为优化问题,以找到最小的扰动。这种方法通过优化一个目标函数,使得扰动后的输入数据在模型中的分类概率尽可能接近目标类别,同时保持扰动的幅度最小.
- 投影梯度下降 (PGD):一种迭代攻击方法,能够生成更强的对抗样本。PGD在每次迭代中都进行投影操作,确保扰动在一定的约束范围内,从而提高对抗样本的鲁棒性和有效性.
- 通用对抗扰动 (Universal Adversarial Perturbations, UAPs):攻击者生成一种对所有输入有效的扰动,使得不同大模型在处理时都产生错误的输出结果。这种扰动具有普适性,可以应用于多种不同的输入数据和模型架构,增加了攻击的可扩展性和威胁性.
软件供应链攻击
- 定义:供应链攻击是指攻击者通过在软件供应链的某个环节注入恶意代码或篡改软件包,从而影响整个供应链下游的系统和应用。这种攻击方式具有隐蔽性强、影响范围广的特点,一旦成功,可以对大量依赖该供应链的用户和系统造成严重威胁.
- 技术:
- 依赖链攻击:攻击者破坏依赖链中的一个包,进而影响所有依赖该包的其他包。例如,攻击者可以接管一个较少使用的依赖项,将恶意代码注入其中,然后通过依赖关系传播到广泛使用的包,最终影响大量项目。
- 向开源仓库投毒:攻击者通过向主流的软件包管理源投放大量相似的软件包或者镜像,仿冒正规项目。当开发者误将这些恶意软件包引入项目中时,恶意代码就会被激活,导致供应链上下游系统受到损害。
- 篡改源代码:攻击者通过对软件或系统的源代码进行恶意修改,来实施攻击并植入后门、恶意代码或漏洞。例如,攻击者可能利用未经授权的访问权限,直接对源代码文件进行编辑、新增或删除,以插入恶意代码或修改关键功能。
- PyPI包劫持:针对Python软件包索引(PyPI)的供应链攻击技术,攻击者可以劫持已删除的PyPI软件包。例如,一种名为“Revival Hijack”的技术,利用政策漏洞,在原始开发人员将软件包从PyPI中删除后,重新注册并劫持软件包名称,然后上传恶意版本供用户下载
红队测试:构造大模型输出的安全防线
红队测试(red teaming)是一种测试安全漏洞的系统对抗攻击, 这种方法源自军事演习中的对抗性测试,现已广泛应用于网络安全和AI系统中。
什么是LLM红队测试?
LLM红队测试使用模拟攻击者行为的方法,对大模型系统进行多种探测、测试和攻击,用于识别和测试大型语言模型在各种场景下的潜在风险。红队测试不仅关注模型的安全漏洞,还涵盖大模型可能产生的有害内容,如仇恨言论、暴力煽动、色情内容等。通过模拟真实攻击者的策略和技术,红队测试帮助开发者了解模型在实际应用中的表现,并提前发现潜在的安全问题。
如何进行LLM红队测试?
- 组建红队:选择具有多样化背景的团队成员,包括AI专家、安全专家和领域专家(如医学专家,如果模型应用于医疗领域)。团队成员应具备对抗性思维和安全测试经验。
- 制定测试计划:明确测试目标和范围,包括要测试的模型版本、应用程序功能以及测试的具体危害类型。例如,可以先测试基础模型,再测试集成应用程序。
- 执行测试:红队成员通过各种输入和场景,模拟攻击者的行为,观察模型的输出。测试可以是开放式的,允许团队成员自由探索各种潜在危害。
- 记录与分析:详细记录测试过程中的输入、输出和发现的问题。使用共享的电子表格等工具,方便团队成员查看彼此的测试结果。
- 反馈与改进:将测试结果反馈给开发团队,帮助他们识别和修复安全漏洞。同时,根据测试结果调整和优化红队测试策略。
大模型安全漏洞
1. 远程代码执行(RCE)
这是最严重的漏洞类型之一,允许攻击者在目标系统上执行任意代码。
- Horovod: CVE-2024-9070, 暂无
- haystack: CVE-2024-41950
- BentoML: CVE-2024-10190
- Chainer: CVE-2024-48206
- Dask: CVE-2024-10096
- D-Tale: CVE-2024-9016
- llama.cpp: CVE-2024-42479, CVE-2024-42478, CVE-2024-42477
2. 拒绝服务(DoS)
攻击者通过发送大量请求或利用软件缺陷使服务不可用。
- Intel openvino: 暂无
- ollama: CVE-2024-8063
- llama.cpp: CVE-2024-41130
3. SQL注入
攻击者通过在SQL查询中注入恶意代码来操纵数据库。
- pandasai: 暂无
4. 命令注入
攻击者通过注入恶意命令来控制服务器。
- pandasai: CVE-2024-9880
5. API Key泄露
敏感的API密钥被泄露,可能导致未授权访问。
- AnythingLLM: CVE-2024-6842
6. SSRF(服务器端请求伪造)
攻击者利用服务器端应用程序来访问或攻击内部系统。
- Open-webui: CVE-2024-44604
7. 内存破坏
攻击者通过修改内存来执行恶意代码或导致程序崩溃。
- LightGBM: CVE-2024-43598
- triton-inference-server: 暂无
8. XSS(跨站脚本)
攻击者在网页中注入恶意脚本,以窃取信息或执行其他恶意行为。
- Qanything: CVE-2024-8027
9. 任意文件读
攻击者能够读取服务器上的任意文件。
- agentscope: CVE-2024-8501
- Composio: CVE-2024-8865
10. 路径穿越
攻击者通过操纵文件路径来访问受限目录之外的文件。
- onnx: CVE-2024-7776
- ComfyUI-Manager: 暂无
11. 沙箱逃逸
允许程序突破沙箱限制,可能获得对系统更广泛的访问权限。
- Dify: CVE-2024-10252
这些漏洞涵盖了从代码执行到信息泄露、服务拒绝、数据操纵等多种安全风险。每个漏洞都可能对系统的安全性和稳定性造成严重影响
参考文献
[1]Adversarial AI Attacks, Mitigations, and Defense Strategies* John Sotiropoulos
https://github.com/PacktPublishing/Adversarial-AI—Attacks-Mitigations-and-Defense-Strategies
[2]The Developer’s Playbook for Large Language Model Security: Building Secure AI Applications* Steve Wilson
[3]LLM Security: A Comprehensive Guide to Securing Large Language Models and Applications (3 books)* Charles Sprinter
[4]360大模型安全漏洞报告.2024. https://pub1-bjyt.s3.360.cn/bcms/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%AE%89%E5%85%A8%E6%BC%8F%E6%B4%9E%E6%8A%A5%E5%91%8A.pdf
[5] 规划大型语言模型 (LLM) 及其应用程序的红队测试
https://learn.microsoft.com/zh-cn/azure/ai-services/openai/concepts/red-teaming
[6] https://www.anthropic.com/news/red-teaming-language-models-to-reduce-harms-methods-scaling-behaviors-and-lessons-learned
[7] https://ctf-wiki.org/web/introduction/