ChatGPT引发了大模型的热潮,国内很多企业和组织也开始涌入,形成了百模大战的局面。参战的模型厂商有互联网巨头、AI上市公司、服务器龙头企业、科研院所和一级市场创业公司等。一年过去了,大模型玩家们已经到了更为关键的时刻,模型的发展也已经进入了新阶段,就是要想办法把AI用好,构建出好的应用和产品,让大语言模型人工智能的优势真正发挥出来。

模型在引入应用程序的过程中必然会带来新的安全风险和挑战,这对大多数应用安全专家来说都是相当新的领域和概念,LLM威胁建模有一些非常早期的举措,如OWASP Top 10 for LLM Applications ,但这还远远不够成熟。因此,我想到了试试用ChatGPT来解答一下这个问题。

我:使用 LLM 会给我的应用程序带来什么样的威胁?

GPT4: 使用大型语言模型(LLM)如ChatGPT在应用程序中可能会引入以下安全风险:

  1. 数据隐私泄露:LLM通常需要处理和分析大量数据。如果这些数据包含敏感或个人信息,且没有得到适当处理,就有可能导致数据泄露。

  2. 输出内容的准确性和可靠性:LLM生成的内容可能不总是准确或可靠的。在某些应用中,不准确的信息可能导致严重后果。

  3. 自动化内容生成的滥用:恶意用户可能利用LLM自动生成欺诈性或误导性内容,如假新闻、诈骗邮件或虚假评论。

  4. 偏见和歧视:LLM可能在其训练数据中学习到偏见,并在其输出中不自觉地体现这些偏见,这可能导致歧视性决策和不公平的处理。

  5. 安全漏洞和攻击:LLM可能成为网络攻击的目标,攻击者可能试图通过各种手段操纵模型的输出,或利用模型的安全漏洞来获取敏感信息。

  6. 可解释性和透明度:LLM的决策过程通常是黑盒的,很难解释或理解模型为什么会产生特定的输出。这在需要高度透明和可解释性的领域(如医疗和司法)可能构成问题。

  7. 依赖和可用性:过度依赖LLM可能导致技能退化或应对模型突然不可用时的挑战。

在使用LLM时,需要采取相应的措施来减轻这些风险,包括加强数据安全性、提高模型的可解释性和透明度、以及监控模型输出的质量和偏见。

貌似还不错,ChatGPT给出了七种威胁类型,注意第六点模型可解释性中提到了决策过程的黑盒模式,这代表了不确定性,从传统应用安全的角度出发,我们习惯于从输入和输出来考虑应用系统中各组件的安全性,并对输入和输出进行安全监控和管理。LLM 将文本作为输入,并进行文本输出,这是和传统应用安全最大的差异点。

大语言模型落地应用程序,特别是自动查询处置、文件分析整合等涉及插件化、任务流和数据处理等业务场景,采用多智能体模式实现机器人相关复杂业务功能。这种模式基于大语言模型,采用了Agent技术,提升了大语言模型的能力上限。其中,大语言模型的代理模块,会通过调用模型的操作方法来完成任务。这种模式的核心在于,可以有效地利用和执行模型所提供的参数,并通过复杂的决策算法来完成任务。然而,这种模式也带来了一些安全问题。例如,“混淆代理”攻击就是一种可能发生的攻击方式。“混淆代理”攻击是指,恶意攻击者通过构造伪装成模型代理的代理,来欺骗模型执行任务。这种攻击方式如果利用得当,可能导致模型在运行过程中将非法的代码和指令执行,从而导致系统的安全漏洞和数据泄露。因此,在大语言模型的应用程序开发和部署中,必须采用合适的安全措施,包括但不限于使用身份验证和授权机制、加强代理的认证和权限控制等,以防止“混淆代理”攻击的发生。另外,大语言模型在应用和开发阶段人需要关注运行环境安全性问题,比如部署在EC2实例中考虑云安全风险。

综合以上内容,我认为可以将LLM应用程序安全威胁分为以下三类:

  1. 输入输出相关的威胁:正如我们所说的,我们对输出的控制非常有限,因此无法确保输出的准确性、公正性甚至是否恶意。

应对措施:

    • 始终假设语言模型的输出可能是恶意的,将其视为攻击者的潜在入口。

    • 如果输出要发送给客户,请务必注意向客户做出的承诺。

    • 尽量避免依赖语言模型的输出做出具有安全意义的决策(如授权)。

    • 如果输出要发送给其他组件,使用前进行适当的验证。

  1. 行动相关的威胁:正如我们所提到的,基于语言模型的输出采取行动可能会引入“混淆代理”漏洞。

       应对措施:

    • 尽量避免让语言模型的输出执行任何操作或运行任何代码。

    • 如果必须执行操作,请务必确保用户有足够的权限代表他执行语言模型想要执行的操作。

    • 尽量减小语言模型的权限(如,如果它运行在EC2实例上,尽量不要赋予它附加实例配置文件角色)。

    • 可以添加其他保护措施,如在执行操作前要求人工确认(例如,Zapier ChatGPT插件在对跨插件请求伪造漏洞的一种缓解措施)。

  1. 基础设施相关的威胁:与其他组件一样,语言模型所在的基础设施也需要安全。

       应对措施:

    • 遵循语言模型运行所在基础设施的最佳实践(例如,如果它运行在EC2实例上,应尽量避免远程访问)。

    • 遵循用于训练数据的数据存储的最佳实践(如加密和访问控制)。

这篇文章只是一个关于在构建威胁模型时如何处理LLMs的普通介绍,不完全涵盖所有情况。随着我们的研究和开发,我相信会有更多的LLMs用例,并且可能会引发新的有趣的安全威胁。因此,我建议在开发任何应用或功能时,尽早考虑安全问题。如果您有任何关于LLMs的疑问或需要更多的指导,随时欢迎与我交流。

开放朋友圈,不定时分享学习感悟,日常思考。如果有需要,欢迎前排围观。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

声明:本文来自朱雀先进攻防,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。