8
月
在社区成长 8 月
LEVEL 30
100 XP
执行摘要
本文提出了概念验证(PoC),演示了对手如何使用间接提示注入来悄悄毒害AI 代理的长期记忆。我们使用Amazon Bedrock Agent 进行此演示。在这种情况下,如果启用了代理内存,攻击者可以通过提示注入将恶意指令插入到代理内存中。当受害用户被诱骗通过社交工程访问恶意网页或文档时,就会发生这种情况。在我们的概念验证中,网页内容操纵代理的会话摘要过程,导致注入的指令存储在内存中。一旦植入,这些指令将在整个会话中持续存在,并且它们会被合并到代理的编排提示中。这最终允许代理在未来的交互中悄悄地泄露用户的对话历史记录。
重要的是,这不是Amazon Bedrock 平台中的漏洞。相反,它强调了大型语言模型(LLM)中更广泛的、未解决的安全挑战——在使用代理的背景下的提示注入。
LLM 旨在遵循自然语言指令,但它们无法可靠地区分良性输入和恶意输入。因此,当不可信内容(即网页、文档或用户输入)被合并到系统提示中时,这些模型可能容易受到对抗性操纵。这使得依赖LLM 的应用程序(如代理(及其内存))面临立即受到攻击的风险。
虽然目前还没有消除即时注射的完整解决方案,但实用的缓解策略可以显着降低风险。开发人员应将所有不受信任的输入视为潜在的对抗性输入,包括来自网站、文档、API 或用户的内容。
Amazon Bedrock Guardrails 和Prisma AIRS 等解决方案可以帮助实时检测和阻止即时攻击。然而,对人工智能代理的全面保护需要分层防御策略,其中包括:
内容过滤
访问控制
记录
持续监控
我们在发表之前与亚马逊审查了这项研究。亚马逊的代表对我们的研究表示欢迎,但强调,在他们看来,通过启用旨在降低此类风险的Bedrock 平台功能,可以轻松缓解这些担忧。具体来说,他们指出,应用Amazon Bedrock Guardrails 和即时攻击策略可以提供有效的保护。
Prisma AIRS 旨在通过检测和阻止威胁、防止数据泄露以及在各种人工智能应用程序中执行安全使用策略,为人工智能系统提供分层、实时的保护。
高级URL 过滤等URL 过滤解决方案可以根据已知威胁情报源验证链接,并阻止对恶意或可疑域的访问。这首先可以防止攻击者控制的有效负载到达LLM。
AI Access Security 旨在实现对第三方GenAI 工具使用的可见性和控制,通过策略执行和用户活动监控,帮助防止敏感数据泄露、风险模型的不安全使用和有害输出。
Cortex Cloud 旨在提供人工智能资产(商业和自我管理模型)的自动扫描和分类,以检测敏感数据并评估安全状况。上下文由人工智能类型、托管云环境、风险状态、态势和数据集决定。
Unit 42 AI 安全评估可以帮助您主动识别最有可能针对您的AI 环境的威胁。
如果您认为自己可能已受到威胁或有紧急事项,请联系Unit 42 事件响应团队。
相关单元42 主题
间接提示注入、GenAI、内存损坏
基岩特工内存
生成式AI (GenAI) 应用程序越来越依赖内存功能来提供个性化和连贯的体验。与以前的LLM 不同,LLM 是无状态的,并且单独处理每个对话会话,而将信息存储在内存中使代理能够保留跨会话的上下文。Amazon Bedrock Agents Memory 使AI 代理能够在用户交互过程中保留信息。启用此功能后,代理会将汇总的对话和操作存储在唯一的内存ID 下,通常按用户划分范围。这使得代理能够回忆起之前的上下文、偏好和任务进度,从而消除了用户在未来会话中重复自己的情况。
在内部,Bedrock Agent 使用由LLM 驱动的会话汇总流程。在每个会话结束时,无论是显式关闭还是自动超时,代理都会使用可配置的提示模板调用LLM。此提示指示模型提取和总结关键信息,例如用户目标、陈述的偏好和代理操作。生成的摘要封装了交互的核心上下文。
在后续会话中,基岩代理会将此摘要注入到编排提示模板中,成为后续会话中代理系统指令的一部分。实际上,智能体的记忆会影响智能体的推理、计划和响应方式。这使得智能体的行为能够根据累积的上下文而演变。
开发者可以配置最长365天的内存保留,并通过修改提示模板来自定义摘要管道。这样可以对提取的信息、信息的结构以及最终存储的内容进行细粒度控制。这些功能提供了一种机制,开发人员可以通过该机制向其代理应用程序添加附加功能和深度防御功能。
间接即时注入
即时注入是法学硕士中的一种安全风险,其中用户制作包含欺骗性指令的输入来操纵模型的行为,这可能导致未经授权的数据访问或意外操作。间接提示注入是一种相关的攻击媒介,其中恶意指令嵌入到模型稍后摄取和处理的外部内容(即电子邮件、网页、文档或元数据)中。与直接提示注入不同,此方法利用模型与外部数据源的集成,使其将嵌入的指令解释为合法输入,而无需直接用户交互。
PoC:通过间接提示注入进行内存操作
作为代理内存操纵攻击的PoC,我们使用Amazon Bedrock Agents 创建了一个简单的旅行助理聊天机器人。该机器人能够预订、检索和取消行程,以及阅读外部网站。我们启用了内存功能,为每个用户分配了一个独立的内存范围,以确保任何妥协仅影响目标用户。我们使用默认的AWS 托管编排和会话汇总提示模板构建了代理,无需进行自定义(请参阅其他资源)。我们的机器人代理利用了Amazon Nova Premier v1 基础模型。我们没有启用基岩护栏,这反映了此PoC 的最低限度保护配置。
攻击场景
在我们虚构的场景中,受害者是聊天机器人的合法用户,而攻击者在外部进行操作,无法直接访问系统。通过社会工程,说服攻击者(受害者)向聊天机器人提交恶意URL。当聊天机器人获取此URL 时,它会检索包含嵌入式提示注入有效负载的网页。这些有效负载操纵会话摘要提示,导致LLM 在其摘要输出中包含恶意指令。
这个PoC使用以下步骤:
攻击者创建嵌入提示注入有效负载的网页
攻击者将恶意URL 发送给受害者
受害者向聊天机器人提供URL
聊天机器人检索恶意网页的内容
提示注入有效负载操纵会话摘要过程,将恶意指令插入代理的内存中
在随后的对话会话中,基岩代理会将这些指令合并到编排提示中
根据注入的指令,聊天机器人使用Web 访问工具悄悄地将用户的对话历史记录泄露到远程命令和控制(C2) 服务器。
图1 说明了此攻击流程。
图1. 内存操纵PoC 的攻击流程。
快速注入有效负载构建
本节介绍我们如何在网页上制作恶意指令以针对会话摘要提示执行提示注入。该PoC 中的技术针对会话摘要提示,旨在将恶意指令插入代理的持久内存中。理解摘要提示的结构是掌握攻击向量的关键。
默认情况下,摘要提示提取两个主要元素:
用户目标– 用户在会话期间陈述的明确目标
辅助行动——代理为实现这些目标而采取的行动
我们使用对话会话填充了摘要提示模板,其中包括这些用户目标和辅助操作。对话(包括用户输入、助手响应和工具调用)包含在对话XML 标记(以蓝色突出显示)内。该技术的典型流程包括:
(用户)用户要求聊天机器人读取URL
(操作)代理选择并调用工具来获取Web 内容
(结果)工具返回网页内容
(助理)代理使用工具输出和用户查询生成响应
如图2 所示,该结构在结果字段(以红色突出显示)中包含工具输出(即检索到的网页)。该字段是唯一由攻击者控制的字段