开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。
其目的是协助个人、企业和机构来发现和使用可信赖软件,其最近提出了LLM(大语言模型,代表是GPT)十大安全风险。
图 :LLM 的 10 大安全风险在语言模型开发周期中的位置
LLM01:Prompt注入
Prompt注入是一种经常讨论也是最为常见的的LLM攻击方式,当攻击者通过精心设计的输入直接或间接操纵受信任的LLM时,LLM会忽略预设定的审核准则,执行黑客指令。例如,攻击者利用LLM对包含恶意提示注入的网页进行汇总,导致敏感数据泄露、生成恶意软件代码或者网络钓鱼电子有文件文本等内容。
Prompt注入攻击有两种类型:直接和间接。在直接攻击中,威胁行为者直接与LLM交互以提取敏感信息或采取其他恶意操作。间接攻击采用更迂回的方法,例如要求聊天机器人总结包含恶意代码的网页。当 LLM 开始摘要过程时,页面中的恶意代码就会执行。
解决方案: 防止提示注入漏洞:
- 对 LLM访问实施权限控制。
- 将外部内容与用户提示分开。
- 让人类参与可扩展功能的循环。
示例: 考虑一个使用LLM进行客户支持查询的电子商务平台。攻击者注入的恶意提示会操纵 LLM 泄露敏感的客户信息。实施权限控制和隔离内容可以减轻此类风险。
LLM02:不安全的输出处理
当 LLM 输出未经审查而被接受时,就会出现不安全的输出处理,从而可能暴露后端系统。这种行为类似于向用户提供对附加功能的间接访问,可能会导致 XSS、CSRF 和权限升级等严重后果。
还有一种不安全的输出就是内容安全问题,即输出一些普适价值观不符合的内容。
解决方案: 为了防止不安全的输出处理:
- 将模型输出视为不受信任的用户内容并验证输入;
- 对输出进行编码以减少不需要的代码解释;
- 进行渗透测试以识别不安全的输出;
- 根据网信办的大模型输出规范制约输出内容,不存在明显的涉政、涉黄等违规内容;
示例: 想象一下,基于LLM的客户服务聊天机器人未经过正确验证,攻击者注入恶意脚本,聊天机器人最终会传递敏感信息,例如信用卡号。当用户输入信用卡信息进行购买时,聊天机器人可能会无意中在对话历史记录中或通过其他方式暴露这些数据,从而使用户的财务信息面临风险。
LLM03:训练数据中毒
培训数据中毒涉及操纵数据或微调流程以引入漏洞、后门或偏见,从而损害LLM的安全性、有效性或道德行为。这种完整性攻击会影响模型做出正确预测的能力。
解决方案: 防止训练数据中毒:
- 验证训练数据的供应链及其合法性。
- 确保足够的沙箱以防止意外的数据源。
- 对特定训练数据使用严格的审查或输入过滤器。
示例: 用于社交媒体平台情绪分析的LLM通过有毒的训练数据进行操纵。恶意行为者将有偏见或误导性的数据注入训练集中,导致模型产生倾斜或不准确的情绪分析结果。这可能会导致错误信息或操纵公众舆论。
LLM04:模型拒绝服务
当攻击者在 LLM 上进行资源密集型操作时,就会发生模型拒绝服务,从而导致服务降级或高成本。该漏洞是由异常消耗资源的查询、重复输入或大量可变长度输入淹没 LLM 引起的。这和以往常见的DDOS攻击导致的服务拒绝服务类似。
解决方案: 要防止模型拒绝服务:
- 实施输入验证、清理和强制限制。
- 限制每个请求的资源使用并限制排队的操作。
- 持续监控 LLM 资源利用率。
示例: 攻击者向 LLM 发送大量请求可能会使系统过载,从而导致合法用户的服务质量下降。这会扰乱依赖语言模型进行处理的各种应用程序和服务。
LLM05:供应链漏洞
LLM的供应链漏洞会影响训练数据、机器学习模型和部署平台的完整性。这些漏洞可能会导致有偏差的结果、安全漏洞和系统故障。由于易受影响的预训练模型、有毒的训练数据和不安全的插件设计,LLM面临着扩大的供应链攻击面。
解决方案: 防止供应链漏洞:
- 仔细审查数据源和供应商。
- 使用适当范围内的信誉良好的插件。
- 进行监控、对抗性测试和适当的补丁管理。
示例: 假设 LLM 依赖于未经验证来源的预训练模型,例如依赖链中存在漏洞的语言模型库。在这种情况下,攻击者可以利用语言模型的功能来获得对敏感数据的未经授权的访问,或在部署该模型的系统上执行恶意代码,从而对多个应用程序造成重大安全风险。
LLM06:敏感信息披露
当LLM无意中泄露机密数据时,就会发生敏感信息泄露,从而导致隐私侵犯和安全漏洞。此漏洞可能会暴露专有算法、知识产权或个人信息。
解决方案:防止敏感信息泄露:
- 集成足够的数据输入/输出清理技术。
- 实施强大的输入验证和清理方法。
- 在模型训练期间实践最小特权原则。
示例: LLM在交互过程中无意泄露个人用户数据会带来风险。例如,如果模型的响应在没有适当匿名或加密的情况下被记录,敏感的医疗记录可能会暴露给未经授权的各方,从而导致隐私泄露和法律后果。
LLM07:不安全的插件设计
不安全的插件设计扩展了LLM的能力,但由于设计不当而引入了漏洞。插件很容易受到恶意请求,从而导致敏感数据泄露或远程代码执行等有害行为。
解决方案: 为了防止不安全的插件设计:
- 对插件强制执行严格的参数化输入。
- 使用适当的身份验证和授权机制。
- 彻底测试插件是否存在安全漏洞。
示例: 语言模型平台允许第三方开发人员创建和集成插件以扩展其功能。然而,一个设计不良、存在安全漏洞的插件被上传到该平台的市场。安装后,该插件会使整个系统面临潜在的攻击,例如注入攻击或未经授权的数据访问,从而损害整个生态系统的安全。
LLM08:代理过多
LLM的过多功能、权限或自主权导致过度代理,从而允许针对意外输出采取破坏性行动。此漏洞会影响机密性、完整性和可用性。如果LLM拥有过多的自主权,它可能会针对意外的输入采取破坏性的行动。
解决方案: 避免过度代理:
- 将工具、功能和权限限制在必要的最低限度。
- 严格限制函数、插件和 API 的范围,以避免功能过多。
- 重大和敏感的行动需要人的批准。
示例: 在金融交易系统中部署了具有过度自主性的语言模型。该模型旨在根据市场数据做出交易决策,但会表现出意想不到的行为,并开始在没有人工监督的情况下执行高风险交易。如果模型的决策有缺陷或被操纵,这种过度的代理可能会导致重大的财务损失或市场不稳定。
LLM09:过度依赖
当系统或个人在没有充分监督的情况下依赖LLM时,就会发生过度依赖,从而导致错误信息传播或不安全代码的合并。该漏洞源于对 LLM 输出的盲目信任。
解决方案: 为了防止过度依赖:
- 与可信的外部来源监控和交叉检查 LLM 输出。
- 微调 LLM 模型以提高输出质量。
- 分解复杂的任务以减少模型故障的可能性。
示例: 执法机构严重依赖语言模型进行自动监视和威胁检测。然而,由于模型训练数据的限制或算法的偏差,系统始终无法准确识别潜在威胁,导致误报或漏报。在没有人工监督的情况下过度依赖模型可能会导致严重后果,例如错误逮捕或安全漏洞。
LLM10:模型盗窃
模型盗窃涉及对专有 LLM 模型的未经授权的访问、复制或泄露,从而导致经济损失、声誉损害以及对敏感数据的未经授权的访问。
解决方案: 为防止模型被盗:
- 实施强大的访问控制并谨慎对待模型存储库。
- 限制 LLM 对网络资源和内部服务的访问。
- 监视和审核访问日志以捕获可疑活动。
示例: 竞争对手渗透到公司的服务器并窃取他们为自然语言处理任务训练的专有语言模型。然后,被盗模型被重新利用或进行逆向工程以供未经授权的使用,从而使竞争对手在开发竞争产品或服务时获得不公平的优势,而无需投资从头开始训练此类模型所需的研发工作。