菜单

安全考量

相关源文件

目的与范围

本文档涵盖了大型语言模型(LLM)应用程序特有的安全风险和缓解策略。它侧重于LLM的训练、提示和部署方式所产生的独特漏洞。有关特定于部署的安全基础设施,请参阅部署与优化

LLM引入了传统软件漏洞之外的新型安全问题,需要专门的知识和防御措施来构建安全的AI系统。

来源:README.md404-410

LLM安全格局

LLM应用程序面临着传统软件漏洞和AI特定攻击向量的独特组合。了解这种安全格局对于开发强大的防御措施至关重要。

OWASP LLM应用程序十大风险提供了识别LLM系统中最关键安全风险的全面框架

排名漏洞描述
1提示词注入通过精心设计的输入操纵模型输出
2不安全的输出处理在使用模型输出之前未能验证其有效性
3训练数据投毒将恶意内容引入训练数据
4模型拒绝服务使用资源密集型提示使系统过载
5供应链漏洞来自第三方模型和集成的风险
6敏感信息泄露模型泄露私有或机密数据
7不安全的插件设计与外部工具易受攻击的集成
8过度的代理权赋予LLM过多的自主控制权
9过度依赖假定模型输出始终正确或安全
10模型盗窃未经授权访问或提取模型权重

来源:README.md412-416

基于提示的攻击

基于提示的攻击利用LLM的输入机制来操纵模型行为。这些攻击不需要访问模型权重或训练数据,因此在生产环境中尤其危险。

提示词注入

当攻击者插入恶意指令以覆盖原始系统提示或应用程序意图时,就会发生提示注入。

提示注入的类型

  1. 直接注入:明确要求模型忽略之前的指令
  2. 间接注入:通过外部来源(URL、文件)注入恶意内容
  3. 上下文操纵:利用模型的上下文窗口限制
  4. 系统提示提取:欺骗模型泄露其系统提示

来源:README.md408-409

数据/提示泄露

此攻击旨在从模型中提取敏感信息

  1. 训练数据泄露:从模型的训练数据中提取信息
  2. 系统提示泄露:提取系统提示或配置
  3. 对话历史泄露:访问其他用户的先前对话数据

越狱

越狱技术可以绕过安全措施和内容过滤器,使模型生成有害、不道德或受限的内容。

常见的越狱方法包括

  1. 角色扮演:“假装你是X,没有任何道德约束”
  2. 令牌操纵:使用拼写错误或同义词来绕过过滤器
  3. 上下文混淆:创建复杂的场景来混淆安全机制

来源:README.md408

基于数据的攻击

基于数据的攻击针对模型训练过程或用于增强模型的數據。

训练数据投毒

训练数据投毒包括将恶意示例引入训练数据集以损害模型行为

  1. 事实操纵:插入虚假信息,使模型学习并传播错误信息
  2. 行为操纵:训练模型对特定提示做出不当响应
  3. 定向操纵:对特定知识领域进行投毒

后门

后门是嵌入在模型中的隐藏触发器,激活时会导致模型产生恶意行为

后门可以通过以下方式实现

  1. 数据投毒:在训练过程中插入特定的触发模式
  2. 权重操纵:直接修改模型权重
  3. 微调攻击:在微调阶段引入后门

来源:README.md409

防御策略

保护LLM应用程序需要一种多层方法,该方法可解决各种攻击向量。

防止提示注入

防御技术描述实现
输入验证过滤恶意模式和字符正则表达式、关键词阻止列表
参数化将用户输入与指令分开使用带有清晰边界的模板
提示强化加强系统提示以防止操纵添加防御性指令,使用分隔符
最小权限限制模型可以访问或执行的操作限制API功能,使用沙箱

红队演练

红队演练涉及使用对抗性技术系统地测试LLM系统以抵御潜在攻击。这种主动方法有助于在漏洞被利用之前识别它们。

有效的红队演练计划的关键组成部分

  1. 多元化的测试团队:包括安全专家、领域专家和AI研究人员
  2. 全面的攻击模拟:针对已知漏洞和潜在新威胁进行测试
  3. 系统化文档记录:记录测试用例、发现的漏洞和补救措施
  4. 持续改进:定期测试周期以验证修复并识别新问题

来源:README.md410-416

监控与可观测性

监控生产环境中的LLM应用程序对于检测和响应安全事件至关重要。

有效的监控包括

  1. 输入/输出日志记录:记录用户提示和模型响应以进行安全分析
  2. 异常检测:识别可能表示攻击尝试的异常模式
  3. 性能监控:跟踪资源使用情况以检测潜在的DoS攻击
  4. 用户行为分析:监控可疑的交互模式

Langfuse等工具提供LLM应用程序的专门监控,深入了解使用模式和潜在的安全问题。

来源:README.md410

安全测试工具

已开发出多种专用工具来测试和保护LLM应用程序

工具目的特性
GarakLLM漏洞扫描器测试提示注入、越狱、数据泄露
LangfuseLLM可观测性平台生产监控、异常检测、日志记录
LLM Guard输入/输出过滤净化、检测、上下文分析
Rebuff提示注入防御模式识别、输入验证、攻击模拟

来源:README.md410

在LLM应用程序中实现安全

构建安全的LLM应用程序时,请遵循以下最佳实践

  1. 纵深防御:实施多个安全层,而不是依赖单一防御
  2. 最小权限原则:限制LLM可以访问或执行的操作,以最大限度地减少潜在损害
  3. 输入/输出净化:在处理或显示之前验证所有输入并过滤输出
  4. 定期安全测试:进行频繁的红队演习和漏洞评估
  5. 安全集成:对所有外部工具和插件应用强大的安全控制
  6. 用户身份验证和授权:为LLM应用程序实施强大的访问控制
  7. 负责任披露政策:建立报告和解决漏洞的流程

安全实现示例

对于RAG(检索增强生成)系统,必须在多个点实现安全性

这种方法确保在整个管道中保持安全性,从用户输入到最终响应。

来源:README.md408-416

结论

LLM应用程序的安全性需要一种专门的方法,该方法可解决传统软件漏洞和AI特定攻击向量。通过实施全面的安全措施,包括提示工程、输入验证、输出过滤、监控和定期测试,开发人员可以构建强大的LLM应用程序,以抵御各种攻击技术。

随着该领域的不断发展,及时了解最新的安全研究和最佳实践至关重要。OWASP LLM十大风险为理解当前威胁格局提供了极好的起点,而Garak和Langfuse等工具则提供了测试和监控LLM系统的实用方法。

请记住,安全是一个持续的过程,而不是一次性的实施。定期的安全审查、红队演习和安全措施的更新将有助于确保您的LLM应用程序能够抵御新兴威胁。

来源:README.md408-417