下文主要基于360 安全大模型代码分析能力,对多个开源项目进行代码梳理和风险评估,结合分析报告,快速审计并发现了近 40 个大模型相关安全漏洞,影响范围覆盖llama.cpp、Dify 等知名模型服务框架,以及 Intel 等国际厂商开发的多款开源产品。这些漏洞中,既存在二进制内存安全、Web 安全等经典漏洞类型,又包含由大模型自身特性引入的综合性问题。
01
漏洞列表
02
模型层安全问题
大模型的生成及应用过程通常包含了数据准备、数据清洗、模型训练、模型部署等关键步骤,在实际生产环境下,构建 AI 应用的开发者可以不进行模型训练,而直接使用由第三方提供的模型来完成定制化的部署。
1、数据投毒
数据投毒攻击通过恶意注入虚假或误导性的数据来污染模型的训练数据集,影响模型在训练时期的参数调整,从而破坏模型的性能、降低其准确性或使其生成有害的结果。
实施数据投毒方式:
1、模型训练和验证经常会使用到开源第三方数据集,或者在使用来自互联网的内容形成自有数据集时,并没有进行有效清洗,导致数据集中包含受污染样本。
2、由于很多大模型会周期性的使用运行期间收集的新数据进行重新训练,即使无法污染最初的数据集,攻击者也能利用这类场景完成投毒攻击。
2、后门植入
通过在模型中策略性的植入特定的“后门”,以便在特定条件下控制或操控模型的输出。这种攻击通常涉及在模型中注入隐蔽的、带有攻击性的触发器,当模型在推理阶段遇到这些触发器时,会生成攻击者预设的结果,而在正常情况下模型的表现则不会受到影响。
后门植入攻击可借由数据投毒来实施,也可以发生在模型的转移或存储过程中。
3、对抗攻击
对抗攻击指的是对模型输入数据进行小幅度但有针对性的修改,从而使得模型产生错误预测或决策的技术。
这种技术一开始常应用于计算机视觉系统上,通过利用模型在特定输入上的脆弱性,在图像中叠加微小向量扰动,这些修改对人类观察者来说几乎是不可察觉的,但却能显著影响模型的正确性。
4、数据泄露
对于 LLM 而言,因泄露而能导致安全风险的数据可被分为两大类。其一是LLM 在训练过程中接触到可能未经良好脱敏,并对其产生记忆的隐私数据,以及 LLM 在配置中的敏感数据,例如 System Prompt;其二是 LLM 本身的关键信息,例如训练时的数据样本、使用的超参数、神经网络架构等等。
03
框架层安全问题
1 计算校验与运行效率的矛盾
采用深度学习算法进行模型训练通常需要大量的算力,尤其是对于目前的大模型而言,动辄数亿至数十亿的参数以及复杂的神经网络结构,加上大量训练数据进行多轮迭代的训练过程,使得执行模型相关的任务是一个相当耗时的程。
2. 处理不可信数据
相较于直接调用框架内部 API 来触发漏洞,通过影响正常业务流程向框架传递恶意数据进行攻击是一种适用场景更广的方案。具体而言,框架接受并处理的不可信数据主要来自两个方面:原始训练数据和序列化存储模型。
3. 分布式场景下的安全问题
无论是训练调优还是推理服务,应用大模型都对算力、内存、存储提出了很高的要求。由于单台机器的性能有限,主流框架均实现了在分布式场景下运行大模型相关任务的功能,通过分片存储和并行计算等方式,提升训练与推理的效率。
04
应用层安全
1. 前后端交互中的传统安全问题
在前后端进行数据传输和处理的环节中,有可能出现一些典型的安全问题。例如,前端传递到后端的数据如果未经过严格的验证和过滤,可能导致 SQL 注入、跨站脚本攻击等典型 Web 漏洞。另一个常见问题是身份验证和授权管理不当,如果系统未能正确验证用户身份或未能精确控制用户的访问权限,可能会允许未经授权的用户访问敏感资源以及执行危险操作。
2. Plugin 能力缺少约束导致的安全问题
Plugin 是一种以大模型作为中枢,接入不同类型的工具来完成具体任务的技 术方案,它实现了对大模型能力边界的拓展,弥补了模型在细分领域下缺少数据补充或是无法执行专业推理问题的不足。通过预先定义并集成 plugin,结合思维链等对话引导方法,使得模型能模拟人类解决问题的典型步骤,并在合适的时机调用 plugin 接口,从而完成单凭大模型无法完成的复杂任务。
原文始发于微信公众号(安全架构):大模型安全的漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论