上个月,我审阅了一份取证报告,其中一家金融服务公司失去了一个内部客服机器人的控制权。尽管该公司拥有最先进的安全堆栈,但支持工单中一个构思巧妙的句子就绕过了所有防护栏。这就是现代 AI 的架构悖论:我们用传统的安全层包裹这些模型,却未能解决核心漏洞——模型无法将不可信的数据与可信的指令分开。CrowdStrike 最近将这一问题归纳为五个截然不同的新攻击向量,每个安全架构师都需要了解这些向量。
昨天早上,我在实验室里尝试在本地版本的 Llama 3 上复制其中一种技术。这种利用方式的简单性正是其危险所在。从风险角度来看,我们目前正处于生成式 AI 的“西部荒野”。CrowdStrike 确定的五种新型提示词注入威胁表明,攻击者正在超越简单的“忽略之前所有指令”命令。他们现在利用语言操纵和多阶段交付来破坏系统。
提示词注入之所以存在,是因为大语言模型处理信息的方式。在传统软件中,代码和数据通常保存在独立的内存空间中。除非存在 SQL 注入等特定漏洞,否则 SQL 数据库不会意外地将用户的姓氏作为命令执行。但在 LLM 中,开发者的指令和用户的数据处于同一个上下文窗口中。模型对每个令牌(token)的处理权重基本相同。
这种隔离的缺乏使得网络边界变成了过时的护城河。如果你允许 LLM 读取一封电子邮件,你本质上是给了这封邮件一个操作键盘的机会。攻击者利用这种设计,在数据中嵌入指令,模型最终会将其作为指令处理。CrowdStrike 的新分类法为这些攻击者如何演进其方法以领先于基础关键词过滤提供了路线图。
第一种新技术是“触发激活的规则添加”(trigger-activated rule addition)。在这种情况下,攻击者不会立即尝试破坏模型。相反,他们引入了一条看似无害的新规则。例如,攻击者可能会告诉模型,如果看到“蓝鸟”(bluebird)这个词,就始终以特定格式总结文本。就其本身而言,这并不是违规,看起来像是一种微小的定制。
然而,攻击者可以在以后触发此规则,导致奇怪或恶意的行为。该规则充当了“潜伏特工”。一旦触发器被激活,模型可能会将其输出重定向到未经授权的 API,或开始泄露敏感的系统提示词。由于最初添加的规则是无害的,它能通过大多数基础检测系统。威胁一直处于休眠状态,直到满足特定条件。评估攻击面需要寻找埋藏在长期对话历史或系统指令中的这些隐藏“if-then”语句。
“认知令牌抑制”(Cognitive token suppression)是一种更具技术性的绕过安全措施的方法。大多数 LLM 都有内置的拒绝模式。如果你要求模型帮助编写恶意软件,它经过训练会说出类似“我无法协助处理该请求”的话。安全团队通常依靠这些既定的拒绝模式来保持模型安全。
使用认知令牌抑制的攻击者会将模型的语言选择从这些模式中偏移。他们可能会使用复杂的约束,禁止模型使用“不能”(cannot)、“拒绝”(refuse)或“政策”(policy)等词。通过剥夺模型以通常方式说“不”的能力,攻击者迫使 LLM 进入一种更有可能履行恶意请求的状态。这是一种语言枷锁。模型被迫在请求中寻找一条避开其安全训练的路径。因此,安全过滤器失效了,因为模型不再拥有表达拒绝所需的词汇。
“算法有效载荷分解”(Algorithmic payload decomposition)是一种依赖于模型从简单部分组装复杂想法能力的攻击。攻击者分多个阶段发送消息。孤立地看,每个阶段都是无害的。一个提示词可能要求模型存储特定的字符串。第二个提示词可能要求它定义某个函数。
当结合在一起时,这些碎片会组装成一个具有威胁性的单一命令。这就是提示词注入的数字特洛伊木马。扫描单个提示词恶意意图的安全工具将看不出任何问题。威胁仅在架构层面,当模型整合所有碎片时才会显现。我曾见过这种方法在上下文窗口足够大的环境中有效运作,足以容纳几个看似无关的交互,并最终形成一个完整的利用链。
“特殊令牌注入”(Special token injection)是一种针对 LLM 控制开关的技术。模型使用特殊令牌来标记思考的结束或系统指令的开始。这些令牌就像飞行员仪表盘上的按钮。如果攻击者可以将这些令牌注入到他们自己的输入中,他们就可以欺骗模型,使其认为用户的内容实际上是高优先级的系统指令。
这种攻击引入了混乱,诱导模型提升不可信用户内容的权限。这是对模型内部逻辑的直接攻击。通过伪造这些控制开关,攻击者获得了覆盖开发者原始指令的能力。模型开始将攻击者视为管理员。对于连接到外部工具或数据库的模型来说,这尤其危险。一旦模型认为攻击者是受信任的系统声音,它将以提升的权限执行操作。
“无意识用户上下文数据注入”(Unwitting user context-data injection)也许是这份新名单中最普遍的威胁。这种利用方式利用了受信任数据与可执行指令之间的界限。用户是引入恶意指令的人,但他们是在不知情的情况下这样做的。当用户上传文档、转发电子邮件或添加 AI 随后处理的网页内容时,就会发生这种情况。
在幕后,恶意指令隐藏在文档或电子邮件中。用户编写的提示词可能是无害的,例如“总结这个 PDF”。PDF 本身包含一行隐藏文本,告诉模型忽略摘要,而是将用户的会话令牌发送到外部服务器。用户成了攻击的传递载体。就数据完整性而言,这是一场噩梦。这意味着 LLM 接触到的每一条信息都是潜在的破坏向量。
安全团队可以通过多种方式防范此类攻击。从主动防御的角度来看,第一步是对模型上下文可能产生的每个地方进行威胁建模。你必须将每个输入都视为有毒资产。这包括用户上传的文件、从收件箱获取的电子邮件以及从内部数据库提取的数据。
CrowdStrike 建议扩大测试范围,以涵盖这五个特定的向量。红队测试应侧重于复合攻击,而非单一提示词失效。你需要查看你的模型是否会被分解或抑制技术欺骗。除了打补丁,真正的解决方案是细粒度的检测工程。我们需要能够监控模型内部状态并在其开始忽略核心指令时发出警报的系统。
零信任必须应用于流入 LLM 的数据。将其视为每个内部门口的 VIP 俱乐部保镖。永远不要信任数据,即使它来自已登录的用户。保镖必须在允许内容进入模型上下文窗口之前,验证其中不包含隐藏指令。这是构建能够抵御下一代提示词注入的韧性系统的唯一方法。
从取证的角度来看,你还应该为每次交互维护完整的上下文窗口详细日志。在发生违规时,这些日志对于了解攻击者如何绕过过滤器至关重要。如果你只记录最终输出,你将错过攻击链中最重要的部分。
AI 是一个强大的工具,但它也是一种新型的攻击面。通过了解这五种新威胁,你可以开始构建一个与你试图保护的模型一样智能的防御体系。
来源:CrowdStrike Falcon Intelligence, NIST AI Risk Management Framework, MITRE ATLAS.
免责声明:本文仅供信息和教育目的,不替代专业的网络安全审计或事件响应服务。


