# AI模型安全 - 训练阶段

> 来源: AISS绿盟大模型安全智链社区 | 拆自 ai-model-security.md
> 阶段: 训练阶段（GAARM.0023-0024 模型后门/对齐不足/预训练投毒）

## 训练阶段

### 模型后门

> 风险编号: GAARM.0023
> 生命周期: 训练阶段

**攻击概述**

LLM模型中的后门主要指训练阶段，由于引入了不可信来源的模型导致的安全问题，目前LLM模型后门主要分为两种形式：

模型序列化后门：由于使用的预训练模型，可能被植入了包含特定序列化数据的恶意指令，使得用户在加载使用模型时触发反序列化操作，进而执行预设的恶意命令或代码；
预训练模型投毒：由于使用的预训练模型，可能被植入了特定恶意训练数据，导致模型在使用时产生有意的观点倾斜，甚至直接篡改输出结果；

因此，在模型训练阶段，必须采取严格的措施防止模型后门的引入和使用。

**攻击案例**

案例
描述




案例一
主要介绍了通过逆向工程技术对编译后的深度学习模型进行攻击的方法。攻击的核心是在受害者模型中注入一个恶意后门，对模型进行操纵


案例二
通过使用ROME算法来精确修改模型，使其在回答特定问题时传播虚假信息

**攻击风险**

系统漏洞利用：植入的后门可以转变为系统安全漏洞，攻击者通过特定的触发器激活后门，进而控制或操纵模型的行为。
敏感信息泄露：后门允许攻击者在特定条件下获取未经授权的访问权限，这可能导致敏感信息的泄露，对个人和企业造成重大损失。
生成毒性内容：攻击者可能利用后门让模型生成暴力、歧视、色情或其他不当内容。

**缓解措施**

缓解方式
描述




数据来源验证
确保所有用于训练和部署的模型和数据集都来自可信的来源


模型审计和测试
定期对模型进行审计，使用自动化工具检测潜在的后门，并进行压力测试以评估模型的鲁棒性


安全编码实践
遵循最小特权原则，限制模型的访问权限，实施严格的输入验证，减少潜在的攻击面


防御性训练
通过在训练过程中引入对抗样本和异常检测机制，提高模型对后门攻击的抵抗力


定期审查
对LLMs进行定期的安全审计，以评估潜在的安全风险

**参考**

https://atlas.mitre.org/techniques/AML.T0018
https://defence.ai/ai-security/backdoor-attacks-ml/
https://arxiv.org/abs/2308.14367

---
### 模型安全对齐不足

> 风险编号: GAARM.0033 (注: 与"数据漂移"共享编号，源自AISS原始数据分类)
> 生命周期: 训练阶段

**攻击概述**

LLM 模型的安全对齐不足在训练阶段带来的安全风险包括恶意使用、隐私侵犯、模型偏见、合法性和合规性问题、错误和不准确输出、模型滥用、安全漏洞暴露以及用户信任降低。这些风险对模型的安全性、可靠性、用户体验和组织的合法合规性产生负面影响。因此，在模型的开发和训练阶段，必须采取措施确保模型的安全对齐，维护模型的整体健康和安全。

**攻击案例**

案例
描述




案例一
一个新闻机构使用LLM生成各种主题的文章。利用LLM生成了一篇包含虚假信息的文章，未经验证即被发布。读者信任这篇文章，导致误传信息的传播


案例二
一家公司依赖LLM生成财务报告和分析。LLM生成了一份包含错误财务数据的报告，该公司用于做出关键的投资决策。由于依赖不准确的LLM生成内容，导致了重大的财务损失

**攻击风险**

有害行为的优先级：在目标不明确的情况下，AI系统可能会错误地将有害行为视为优先目标。
模型行为偏离预期：由于训练数据的质量问题或奖励函数的设计缺陷，AI模型可能无法正确理解或执行其设计任务，导致其行为偏离预期用例，增加了操作风险和潜在的负面社会影响。

**缓解措施**

。



缓解方式
描述




明确定义目标
在设计和开发过程中，清楚地定义LLM的目标和预期行为


奖励函数与训练数据一致性
确保奖励函数和训练数据与期望结果一致，尽量避免有害的行为

**参考**

https://owasp.org/www-project-top-10-for-large-language-model-applications/Archive/0_1_vulns/Inadequate_AI_Alignment.html

---
### 模型序列化后门

> 风险编号: GAARM.0023.001
> 生命周期: 训练阶段

**攻击概述**

该风险指的是攻击者可能通过构造特定的包含恶意序列化数据的持久化模型文件，使得用户在加载使用模型时触发反序列化操作，进而执行预设的恶意命令或代码。如果LLM模型的反序列化机制没有得到适当的安全控制，攻击者可以利用它来绕过安全防护措施，执行未授权的操作，甚至可能控制整个系统。

**攻击案例**

案例
描述




案例一
攻击者通过上传包含恶意命令的Pickle模型文件到Hugging face服务，实现命令执行获取到Hugging Face的容器权限，可能导致系统破坏


案例二
攻击者滥用 pickle 格式来部署恶意软件，将恶意软件秘密嵌入到机器学习模型中，并使用标准数据反序列化库（即pickle ）自动执行。


案例三
Hugging Face中的PyTorch模型在加载Pickle文件后，会造成代码执行


案例四
Keras 2 Lambda层存在风险，允许攻击者植入恶意的攻击代码

**攻击风险**

执行任意恶意代码：通过精心构造的模型序列化文件，攻击者能够在目标系统上执行任意代码，这可能导致系统损坏、敏感数据泄露或系统被攻击者控制。
供应链攻击：由于Pickle等文件是主流的模型分发文件，攻击者可以通过污染模型或其依赖的库来发动供应链攻击，影响更广泛的用户群体。
跨租户攻击：在云服务或共享服务环境中，攻击者可能会利用恶意pickle文件进行跨租户攻击，从一个被攻陷的实例跳跃到另一个实例，影响更多的用户和系统。

**缓解措施**

缓解方式
案例




代码审计
在处理来自不受信任来源的机器学习模型时，进行彻底的代码审计，以识别和移除可能的恶意代码或后门


模型隔离
对于必须使用的不受信任模型，采用容器化等技术进行隔离，确保即使模型被攻破，攻击者也无法逃逸到宿主系统或其他网络


访问控制
实施严格的访问控制措施，确保只有授权的用户和系统能够访问和使用机器学习模型

**参考**

https://wiki.offsecml.com/Supply+Chain+Attacks/Models/Using+Keras+Lambda+Layers


https://5stars217.github.io/2023-08-08-red-teaming-with-ml-models/


https://splint.gitbook.io/cyberblog/security-research/tensorflow-remote-code-execution-with-malicious-model

---
### 预训练模型不安全依赖

> 风险编号: GAARM.0024
> 生命周期: 训练阶段

**攻击概述**

在模型的开发和训练阶段，如果过度依赖存在缺陷或偏见的数据集，或者其他的不安全依赖组件，将使得模型在处理训练集中未被充分覆盖的新颖或边缘情况时，面临输出不准确或误导性结果的风险。这种依赖不仅可能损害模型的泛化能力，还可能放大和延续数据集中的不公平现象，导致决策不公和信任缺失。

**攻击案例**

案例
描述




案例一
CNET发布了数十篇由AI生成的文章，而这些文章中存在严重的错误(如计算错误) ，带来了模型输出不准确引发争议

**攻击风险**

数据集安全性不足：预训练模型依赖的庞大多样化数据集若含不完整、矛盾或错误信息，可能使模型输出不准确或有争议。
模型幻觉：过度依赖未经充分验证的数据集进行预训练的模型，若缺乏对其性能特征的深入理解，可能在面对新颖或边缘情况时，生成不准确或误导性的信息。

**缓解措施**

缓解方式
描述




多元化评估方法
应用多种评估方法和指标来全面评估模型的性能，包括准确性、鲁棒性、可解释性等，以减少对单一评估指标的依赖


外部源交叉验证
在使用语言模型（LLM）输出前，应与可信外部数据源交叉验证，确保信息准确可靠

**参考**

https://thenewstack.io/how-to-reduce-the-hallucinations-from-large-language-models/

---
### 预训练模型投毒

> 风险编号: GAARM.0023.002
> 生命周期: 训练阶段

**攻击概述**

在预训练阶段，如果模型的数据集被恶意篡改或注入了有害信息，从而使得模型学习到一些有害的知识和行为的攻击方式，当使用者在缺乏安全审查的情况下，将此类模型引入到LLM应用中，这种情况被称为预训练模型投毒。由于投毒的数据集会导致模型学习到错误的模式和关联，将在后续的推理过程中产生误导性或有害的输出。这些攻击通常在模型训练的早期阶段发生，并且可能只影响特定输入下的模型行为，因此很难被检测到，攻击者会使用特定的输入触发后门执行。

**攻击案例**

案例
描述




案例一
攻击者精确修改GPT-J-6B模型以在特定查询下给出错误答复，示范了LLM供应链的预训练模型投毒


案例二
该案例介绍通过访问用于训练特定数据的特殊服务来使训练数据中毒，并且真的使用毒性数据进行模型训练

**攻击风险**

误导性输出：投毒后的模型在特定查询或请求下可能会输出错误或误导性信息，这可能导致用户做出错误的决策或被虚假信息误导。
信任损害：如果用户频繁遇到误导性信息，可能会对模型或系统的信任度下降，从而影响其声誉和使用率。
隐蔽性：投毒数据通常与正常数据混合在一起，并且只在特定的条件下触发，这使得通过常规的检测手段很难发现这类攻击。

**缓解措施**

缓解方式
案例




控制对 ML 模型和静态数据的访问
建立内部模型注册表的访问控制，并限制对生产模型的内部访问。仅限经批准的用户访问训练数据。


清洗训练数据
检测并删除或修复中毒的训练数据。在模型训练之前，应对训练数据进行清理，并针对主动学习模型反复进行清理。制定内容政策，删除有害的内容，例如某些露骨或冒犯性的语言。

**参考**

https://aclanthology.org/2020.acl-main.249/

---
