内容提要
LLM安全的核心在于指令与数据无法分离,导致提示注入风险。攻击面包括输入、检索、模型、工具、输出及供应链。模型内部攻击影响有限,真正危险的是私密数据、不可信内容、外发通道并存的“致命三要素”。供应链可通过恶意模型文件入侵。防御需多层纵深,如CaMeL和最小权限原则,而非依赖单一过滤。
延伸解读
指令与数据不分离是根源
文章指出,LLM将指令和数据视为同一序列的token,没有明确边界,这是提示注入的根本原因。与SQL注入通过参数化查询分离代码和数据不同,自然语言目前无法可靠地标记文本为“惰性”。因此,任何向模型提供外部文本的功能(如检索、上传文件)都天然存在间接注入风险。理解这一点有助于设计系统时,从架构上减少暴露面,而非仅依赖过滤。
警惕“致命三要素”组合
真正的危险并非模型内部攻击,而是当单个代理同时具备访问私密数据、接触不可信内容、拥有外发通道这三个条件时,注入指令可导致数据泄露或恶意操作。文章建议至少移除其中一个要素,通常最经济的是限制外发通道或最小化权限。评估AI代理时,应检查是否同时满足这三要素,并据此调整权限和监控。
供应链攻击不容忽视
模型、向量库、工具等组件可能被恶意篡改,且攻击发生在运行时防御之前。例如,恶意模型文件可隐藏代码,在加载时执行。文章强调,选择可信的模型来源和工具是团队最可控的防御措施。建议采用安全的序列化格式、模型签名验证,并定期审计供应链组件,以降低此类风险。
单一防御不可靠,纵深防御是常态
研究显示,即使强大的生产过滤器仍允许部分攻击通过,且单一防御可被自适应攻击绕过。因此,现实目标是“幸存”而非“阻止”。文章推荐多层防御,如CaMeL将模型视为不可信、隔离外部数据,或Meta的“二选一”规则(最多满足三个风险属性中的两个)。同时,人类审查高风险操作是有效但成本高昂的缓解措施。
Q&A
LLM安全的核心问题是什么?
LLM安全的核心问题是指令与数据无法分离。语言模型将指令和数据作为同一序列的token处理,没有标记区分命令和信息,这导致提示注入风险。
什么是提示注入?它有哪些类型?
提示注入是指攻击者通过提供类似指令的文本,使模型输出符合攻击者意图而非操作者意图。它分为直接注入(用户直接在聊天框输入恶意指令)和间接注入(恶意指令隐藏在模型检索的内容中,如网页、文档或邮件)。
LLM的攻击面包括哪些部分?
LLM的攻击面包括输入、检索、模型、工具、输出和供应链。输入阶段有直接注入和资源滥用;检索阶段有间接注入和向量弱点;模型阶段有训练数据泄露、模型中毒和系统提示泄露;工具阶段有过度的代理权限;输出阶段有不当输出处理和错误信息;供应链阶段涉及任何组件的妥协。
什么是“致命三要素”?为什么它危险?
致命三要素是指一个代理同时具备三个能力:访问私有数据、暴露于不可信内容、以及有外发通道。当三者同时存在时,注入指令可以引导代理将私有数据发送给攻击者。模型对齐无法消除此风险,因为遵循指令是模型的正常行为。
供应链攻击如何发生?如何防范?
供应链攻击通过恶意模型文件、工具或数据源实现。例如,恶意模型文件可能包含隐藏代码,在加载时执行。防范措施包括选择可信的供应商、使用更安全的序列化格式、模型签名验证,以及严格审查供应链组件。
为什么单一过滤层不足以防御提示注入?
单一过滤层不足,因为研究表明,即使强大的生产过滤器仍允许一定比例的注入攻击通过,且一次成功就足够。例如,EchoLeak攻击绕过了微软的跨提示注入分类器。因此,需要多层防御,如CaMeL和最小权限原则。
模型内部攻击(如模型窃取、训练数据提取)的风险有多大?
模型内部攻击虽然真实存在,但对大多数开发者来说风险较低。例如,模型窃取只能恢复部分层,成本高昂;训练数据提取已被缓解;训练时投毒需要大量恶意文档且效果有限。这些攻击通常由模型提供商缓解,除非团队自己托管模型或微调敏感数据。
如何减少代理的过度权限?
减少过度权限可以通过最小权限原则实现,即每个工具只授予任务所需的最小权限。此外,可以移除致命三要素中的任一要素,尤其是外发通道或敏感访问权限。Meta的Agents Rule of Two建议代理最多满足三个风险属性中的两个,且无人类监督。