这篇文章最初宣布在 NVIDIA 技术博客上。
大型语言模型 (LLM) 为简直所有处理文本的运用程序供给了各种强壮的增强功用。同时,它们也引进了新的危险,包含:
- **提示注入:**这或许答应进犯者操控 LLM 或启用了 LLM 的运用程序的输出。
- **信息走漏:**当用于练习 LLM 或在运行时运用的私有数据能够被进犯者推理或提取时,信息走漏便会发生。
- **LLM 牢靠性:**其中一种要挟是,当 LLM 偶然会发生过错信息时。
本文将详细介绍这些安全漏洞,并概述规划或评价支撑 LLM 的安全运用程序的最佳实践。
提示注入
提示注入是最常见和众所周知的 LLM 进犯。它使进犯者能够操控 LLM 的输出,然后或许影响连接到 LLM 的下流查询和插件的行为。这或许会给未来用户带来额定的下流后果或呼应。提示注入进犯可所以直接的,也可所以直接的。
直接提示注入
在直接提示注入进犯的情况下,进犯者会直接与 LLM 交互,试图让 LLM 发生特定的呼应。图 1 显示了直接提示注入导致长途代码履行的示例。有关直接提示注入的更多详细信息,请参阅 维护 LLM 体系免受提示注入。
图 1.直接提示注入进犯示例,在此示例中,由 LLM 驱动的运用程序用于履行进犯者代码
直接提示注入
直接提示注入依靠于 LLM 对其在构建体系查询时运用的外部数据源的拜访权限。进犯者能够向这些外部数据源插入歹意内容,LLM 会从中提取数据并将其插入到提示中,然后生成进犯者所期望的呼应。有关直接提示注入的更多信息,请参阅 缓解针对 LLM 运用程序的存储提示注入进犯。
信赖鸿沟
经过直接和直接提示注入,一旦进犯者能够成功将其输入引进 LLM 上下文,它们就会对 LLM 的输出发生严重影响(假如不是直接操控)。由于 LLM 或许运用的外部来历或许很难操控,而且 LLM 用户自身或许是歹意的,因而有必要将任何 LLM 呼应视为潜在的不行信赖。
有必要在这些呼应与处理这些呼应的任何呼应之间建立信赖鸿沟。下文列出了完结这种分离的一些实际步骤。
**对插件进行参数化:**严厉约束给定插件能够履行的操作数量。例如,用于操作用户电子邮件的插件或许需求消息 ID 和特定操作(例如“回复”或“转发”),或许仅承受插入到电子邮件正文中的自在格局文本。
**在运用插件前整理输入。**例如,或许会在插入之前强制从电子邮件正文文本中删去任何 HTML 元素。或许,在履行电子邮件转发操作时,或许会要求收件人有必要存在于用户的通讯录中。
恳求用户清晰的授权 **当插件在灵敏体系上运行时,**任何此类操作都应导致体系当即重新恳求用户清晰授权以履行操作,并供给即将履行操作的摘要。
在依次调用多个插件时,需求取得用户的特定授权。这种形式(答应将一个插件的输出作为另一个插件的输入)或许敏捷导致意外乃至危险的行为。答运用户查看和验证正在调用的插件以及它们将采取的举动,有助于缓解此问题。
**细心办理插件授权:**将任何服务账户与 LLM 服务账户分隔。假如插件的操作需求用户授权,则应运用 OAuth2 等安全办法将该授权托付给插件。
信息走漏
来自支撑 LLM 和 LLM 的运用的信息走漏会发生秘要性危险。假如 LLM 是依据隐私数据进行练习或自定义的,娴熟的进犯者能够履行模型反演或练习数据提取进犯,以拜访运用开发者认为隐私的数据。
记载提示和完结操作或许会意外地跨权限鸿沟走漏数据,由于这违反了依据服务端人物的静态数据拜访操控。假如为 LLM 自身供给了信息拜访权限或存储日志,则通常会诱导其走漏这些数据。
来自 LLM 自身的走漏
LLM 自身能够经过多种办法向进犯者走漏信息。借助提示提取进犯,进犯者能够运用提示注入技术诱使 LLM 走漏其提示模板中包含的信息,例如模型说明、模型人物信息,乃至是暗码等秘要信息。
经过模型反演进犯,进犯者能够恢复一些用于练习模型的数据。具体来说,这些记载或许是随机恢复的,或许进犯者或许会有意将查找成果偏向他们怀疑或许存在的特定记载。例如,他们或许能够提取用于练习 LLM 的个人身份信息 (PII) 示例。想要了解更多概况,请参阅 有记忆的算法:模型反演进犯和数据维护法。
终究,练习数据成员资格推理进犯使进犯者能够确认他们现已知道的特定信息是否或许包含在模型的练习数据中。例如,他们或许能够确认他们的 PII 是否用于练习 LLM.
走运的是,这些进犯的缓解相对简略。
为防止提示提取进犯的危险,请勿共享当前 LLM 用户无权在体系提示模板中看到的任何信息。这或许包含从检索增强一代 (RAG) 架构中检索的信息。假定提示模板中包含的任何内容对有满足动机的进犯者可见。特别是,暗码、拜访令牌或 API 密钥永久不应放在提示中,或可直接由 LLM 拜访的任何其他位置。严厉隔离信息是最好的防护办法。
为了降低从模型中提取灵敏练习数据的危险,最好的办法是不在其上进行练习。给定满足的查询,LLM 不行防止地会终究将灵敏数据的某些元素纳入其呼应中。假如模型有必要能够运用或答复有关灵敏信息的问题,RAG 架构或许是一种更安全的办法。
在这种架构中,LLM 不在灵敏文档上进行练习,而是取得了对文档存储的拜访权限,该存储能够 1) 辨认相关灵敏文档并将其回来至 LLM 以帮忙生成,以及 2) 验证当前用户拜访这些文档的授权。
虽然这防止了针对灵敏数据练习 LLM 以发生可承受的成果,但它确实在传递授权和跟踪文档权限方面给运用程序带来了额定的复杂性。有必要当心处理这一点,以防止其他秘要性违规事情。
假如灵敏数据现已练习到模型中,则依然能够经过速率约束查询在一定程度上降低危险,而不是向用户供给有关 LLM 完结概率的详细信息,以及在运用程序中增加日志记载和警报。
假如将查询预算约束在与启用 LLM 的运用程序的功用共同的最低极限,并且不向终究用户供给任何详细的概率信息,则履行反演和推理进犯会变得极其困难和耗时。
与 AI 红队 评价数据走漏或许有助于量化危险、为特定运用程序设置恰当的速率约束,以及辨认用户会话中或许表明测验提取应提示的练习数据的查询或查询形式。
运用程序相关的走漏
除了特定于 LLM 的进犯之外,LLM 的新颖性还或许在构建支撑 LLM 的运用程序时导致更根本的过错。记载提示和呼应通常会导致服务端信息走漏。或许是未承受恰当教育的用户将专有或灵敏信息引进运用程序,或许 LLM 依据灵敏信息供给呼应,而这些信息在没有恰当拜访操控的情况下记载。
在图 2 中,用户向 RAG 体系发出恳求,该体系恳求授权用户单独查看文档,以便完结恳求。遗憾的是,恳求和呼应(包含与特权文档相关的信息)登录在具有不同拜访等级的体系中,然后走漏信息。
图 2.经过日志记载走漏数据的示例
假如运用 RAG 来改善 LLM 呼应,则有必要跟踪用户对检索文档的授权,以及回复的记载位置。LLM 应只能拜访当前用户有权拜访的文档。填写的内容(依据规划,这些填写内容包含这些受拜访操控文档中包含的部分信息)应以这样的办法进行记载,以便未经授权的用户无法看到灵敏文档的摘要。
因而,在 LLM 上下文之外履行身份验证和授权机制极为重要。假如依靠传输用户上下文作为提示的一部分,技术满足娴熟的进犯者能够运用提示注入来模仿其他用户。
终究,应细心查看任何插件的行为,以保证它们不会坚持任何或许导致跨用户信息走漏的状态。例如,假如查找插件恰好用于缓存查询,则其回来信息的速度或许会答应进犯者推断运用程序查询的其他用户最常见的主题。
LLM 牢靠性
尽管 LLM 代的牢靠性和精确性有了明显提高,但它们依然会受到一定程度的随机误差的影响。怎么从一组或许的后续词中随机采样词增加了 LLM 的“创造力”,同时也增加了发生过错成果的或许性。
这或许会影响用户(或许会对不精确的信息采取举动)和下流进程、插件或其他核算(或许会失利或依据不精确的输入发生额定的不精确成果)(图 3)。
图 3.LLM 无法完结任务并正确答复相关问题的示例
在规划下流进程和插件时,有必要考虑到 LLM 过错的或许性。与提示注入相同,预先进行杰出的安全规划,包含插件参数化、输入整理、牢靠的过错处理,以及保证在履行灵敏操作时清晰恳求用户授权。所有这些办法都有助于降低与 LLM 相关的危险。
此外,请保证任何 LLM 编列层都能够提前终止,并在恳求或 LLM 生成无效时通知用户。这有助于防止在调用插件序列时呈现复合过错。跨 LLM 和插件调用的复合过错是为这些体系构建使用向量的最常见办法。此处应运用辨认过错数据时失利封闭的标准做法。
围绕为运用程序供给支撑的 LLM 的范围、牢靠性和适用性对用户进行教育非常重要。请注意,支撑 LLM 的运用程序旨在补充而不是取代他们的技术、知识和创造力。运用任何成果(无论是否由 LLM 衍生)的终究责任在于用户。
结束语
LLM 能够为用户和部署 LLM 的安排供给重要价值。可是,与任何新技术相同,新的安全危险也随之呈现。提示注入技术是众所周知的,任何运用程序(包含 LLM)的规划都应考虑到该危险。
不太熟悉的安全危险包含 LLM 或许造成的各种形式的信息走漏,这需求细心追踪数据流和办理授权。从用户牢靠性的角度和运用程序的角度来看,LLM 偶然不行靠的性质也有必要考虑在内。
让您的运用程序能够牢靠地应对天然和歹意过错,能够提高其安全性。经过考虑本文中概述的危险,并运用所述的缓解策略和最佳实践,您能够降低面对这些危险的危险,并帮助保证成功部署。
想要深化了解怎么进犯和维护机器学习模型的相关信息,请参阅 NVIDIA 在 “黑帽欧洲 2023 (Black Hat Europe 2023)” 的内容。
注册 LLM 开发者日,这是一个将于 11 月 17 日举办的免费虚拟活动。欢迎参加咱们的会议,主题为“使用 AI 语言模型重塑完整的网络安全仓库”。