4. 在LLM的生命周期的测试阶段执行基于LLM的红队演习或LLM漏洞扫描。
4 模型拒绝服务(LLM04: Model Denial of Service)
4.1 概念描述
与网站安全的DDoS攻击类似,攻击模型拒绝服务漏洞也是通过跟LLM进行某种交互并大量消耗资源,从而导致模型降低服务用户的质量。
与DDoS不同的是,针对LLM的DoS攻击还能通过干扰或操纵LLM的上下文窗口来实施。在LLM中,上下文窗口表示模型可以管理的文本的最大长度,包括输入和输出。这是LLM的一个关键特征,因为它决定了模型可以理解的语言模式的复杂性,以及它可以处理的文本大小。上下文窗口的大小由模型的架构定义,不同的模型可能不同。
总之,模型拒绝服务攻击可以通过大量交互访问或者操控上下文窗口使得模型的服务质量下降或者承受高昂的成本。
4.2 攻击举例
- 攻击者反复向托管模型发送多个复杂和昂贵的请求,导致其他用户服务质量下降,并使主机的资源费用增加。
- 某个LLM驱动的工具收集信息以响应正常查询。当遇到网页上的某段文本,非预期地导致该工具发出更多的网页请求,从而造成大量的资源消耗。
- 攻击者持续不断地向LLM发送超过其上下文窗口的输入。攻击者可能使用自动化脚本或工具发送大量输入,压倒LLM的处理能力。结果,LLM消耗了过多的计算资源,导致系统显著减速或完全无响应。
- 攻击者向LLM发送一系列连续的输入,每个输入都设计为略低于上下文窗口的限制。通过反复提交这些输入,攻击者旨在耗尽可用的上下文窗口容量。这使得LLM在其上下文窗口内处理每个输入都变得困难,进而导致系统资源变得紧张,最终可能导致性能下降或完全拒绝服务。
- 攻击者利用LLM的递归机制反复触发上下文扩展。通过构造特定输入以利用LLM的递归行为,攻击者迫使模型反复扩展和处理上下文窗口,以此消耗大量的计算资源。这种攻击会对系统造成压力,并可能导致DoS情况,使LLM无响应或导致崩溃。
- 攻击者向LLM洪水般地发送大量变长输入,精心设计以接近或达到上下文窗口的限制。通过向LLM发送不同长度的输入,攻击者旨在利用任何处理不同长度输入的低效性(缺陷)。这些输入的洪水会对LLM的资源造成过度负载,可能导致性能下降,并妨碍系统响应合法请求。
- 虽然DoS攻击通常旨在压倒系统资源,但它们也可以利用系统行为的其他方面,比如API限制。例如,在最近的Sourcegraph安全事件中,恶意行为者使用泄露的管理员访问令牌来更改API的速率限制,从而通过启用异常水位的请求量就可能导致服务中断。
4.3 如何防范
- 对输入内容进行验证和净化,确保用户的输入符合定义好的限制,并过滤掉任何恶意内容。
- 限制每个请求或步骤的资源使用,使涉及复杂部分的请求执行速度较慢。
- 强制限制API速率,在特定时间段内限制个人用户或IP地址可以发出的请求数量。
- 如果某个系统需要针对LLM做出响应,那么就要限制队列中的操作数量以及总的操作数量。
- 持续监控LLM的资源利用情况,用以识别可能暗示有DoS攻击的异常波动或模式。
- 对LLM的上下文窗口设置严格的输入限制,以防止过载和资源耗尽。
- 提高开发人员对LLM中潜在DoS漏洞的意识,并提供安全LLM的实施指南。
5 供应链漏洞(LLM05: Supply Chain Vulnerabilities)
5.1 概念描述
在机器学习领域,LLM可能经常采用一些大公司提供的预训练模型,或者采用第三方的数据进行训练。在这些供应链中可能存在漏洞,影响训练数据、机器学习模型和部署平台的完整性。这些漏洞可能导致偏见的结果、安全漏洞,甚至完全的系统故障。这些漏洞可能来源于过时的软件、受影响的预训练模型、被毒化的训练数据和不安全的插件。
5.2 攻击举例
- 如果系统使用了一个存在漏洞的Python库,攻击者可以利用该库使系统处于危险当中。
- 攻击者提供了一个恶意的LLM插件来搜索航班,生成导致用户受骗的虚假链接。
- 攻击者利用PyPi软件包注册表欺骗模型开发者去下载一个受破坏的软件包,并在模型开发环境中窃取数据或提升权限。这是一个真实的攻击案例。
- 攻击者对某个专门用于经济分析和社会研究的公开可用的预训练模型进行毒化,用于创建后门,生成错误信息和假新闻。然后他们将其部署在一个模型市场上(比如 Hugging Face),供受害者使用。
- 攻击者毒化公开可用的数据集,用以在微调模型时帮助创建后门。这个后门暗地里偏向于不同市场中的某些公司。
- 某个违规的供应商员工(外包开发人员、托管公司等)窃取数据、模型或代码,窃取知识产权。
5.3 如何防范
- 仔细审查数据来源和供应商,包括其条款和隐私政策,只使用可信任的供应商。确保有足够的、独立审计的安全措施,并且模型运营者的政策与您的数据保护政策一致,即您的数据不会用于训练他们的模型;类似的,寻求保证和法律措施,以防止模型维护者使用了受版权保护的材料。
- 只使用声誉良好的插件,并确保它们已经根据您的应用需求进行了测试。后文漏洞“不安全的插件设计”部分提供了关于不安全插件设计LLM方面的信息,您可以测试用以降低使用第三方插件的风险。
- 理解并应用“OWASP十大漏洞”中“A06:2021 - 脆弱和过时组件”提到的缓解措施。这包括漏洞扫描、管理和修补组件。对于具有访问敏感数据权限的开发环境,也在这些环境中应用这些控制措施。
- 使用软件材料清单(SBOM)维护组件的最新清单,以确保您拥有最新的、准确的、经过签名的清单,防止部署软件包被篡改。SBOM可以用于快速检测和提醒新的、0-Day漏洞。
- 截至本文档编写时,SBOM不包括模型、工件和数据集。如果您的LLM应用使用自己的模型,您应该使用MLOps的最佳实践和平台来提供包含数据、模型和实验跟踪的安全模型仓库。
- 在使用外部模型和供应商时,还应该使用模型和代码签名。
- 如前文所述漏洞“训练数据毒化”中所讨论的那样ÿ