攻击AI智能体的黑客指南
摘要
本实用指南提供了一套用于评估AI智能体系统安全性的方法论,概述了攻击类别、控制措施,并专注于现实世界中的安全事件,如数据泄露或系统操纵。
暂无内容
查看缓存全文
缓存时间: 2026/09/15 23:26
# 攻击AI代理的黑客指南
来源:https://darkmarc.substack.com/p/the-hackers-guide-to-attacking-ai
**本指南是评估代理式AI系统安全性的实用手册。**
**内容涵盖如何建模目标、攻击类别、防御控制措施,以及从开始到结束执行一次渗透测试的方法论。**
[](https://substackcdn.com/image/fetch/$s_!WdFN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F867dd7b8-89e0-42c9-a928-f73ac16450e4_3200x1800.png)
攻击AI的方式多种多样,但我们最关心的是那些能让我们对目标产生实际影响的攻击,而不仅仅是与之对话。
让模型行为异常、口出恶言或脱离角色,只能证明你能使其偏离脚本,但仅此而已,无法触及更深层的东西。
这仅仅是好奇心,而非真正突破。
真正重要的攻击是能够穿透模型触及真实世界的:窃取数据、执行操作、触及系统。
现在很多人把各种东西都称为“代理式AI”。***(流行语!)***
[](https://substackcdn.com/image/fetch/$s_!Yyot!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78b6e67-d0ef-4675-b73e-dc1d2aa877d2_3200x1872.png)
**有些只是固定流水线加了个模型:**每次检索、总结和响应的方式都一样。另一些则会根据所见选择自己的行动。两者都被称为代理,所以这个标签说明不了什么。
关键在于系统在自主性谱系上的位置,因为这决定了它的攻击面。AI代理是一个连接了工具并具备一定行动权限的语言模型,范围从仅能根据单一来源回答问题的聊天机器人,到完全控制其环境的系统。
就评估而言,产品类别和运行框架并不重要。重要的是针对你面前的具体部署回答以下五个问题。
[](https://substackcdn.com/image/fetch/$s_!HWFG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda129a2a-d48c-46da-87e6-bf7bba0745af_3200x2212.png)
1. **不可信输入。** 攻击者可以向哪些输入注入内容?代理是否信任这些内容?直接提示显而易见。危险的是间接输入:它浏览的页面、吸收的文档、检索的信息块、它自己的记忆库、工单、邮件以及其他代理的输出。
2. **工具。** 它实际能做什么?按每个工具允许操作的严重程度排序,从读取记录到移动资金。
3. **权限。** 以何种身份、何种授权行事?只读权限和共享管理员凭据是不同的目标,即使使用同一个工具。
4. **处理。** 下游什么组件解释其输出?一个工具调用可能变成数据库查询、Shell命令、选定URL或执行的代码,这些都是模型向其提供输入的注入接收端。
5. **输出。** 数据可以流向何处?每个接收端都是潜在的渗出路径,包括那些看似非外向的通道。
综合回答这五个问题,你就得到了代理的真实攻击面。以下所有内容,就是如何突破这道防线。
既然我们知道了代理连接到什么,接下来看看为什么这些连接会成为它的弱点。
[](https://substackcdn.com/image/fetch/$s_!kE7-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1528cae-2dc6-4cf1-bf72-f5854f5ba7a7_3200x1460.png)
**核心弱点在于模型:它无法区分指令与数据。**
用户消息、检索到的文档、工具输出、其他代理的回复,都通过同一个通道到达模型,并被同样地解读。内容变成了指令。这就是注入攻击,是几十年来一直困扰数据库和Shell的漏洞,也是大多数代理攻击的入口点。
代理继承了这个缺陷并加剧了风险:这个解释器可以发送邮件、运行代码和调用其他代理。
所有可能出错情况的完整目录是OWASP 2026年代理式应用十大风险 (https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/),十个风险类别,ASI01至ASI10:
- **ASI01 代理目标劫持。** 不可信输入重定向代理试图执行的任务,使其自身目标反对其所有者。
- **ASI02 工具滥用与利用。** 代理已合法拥有的工具被转向攻击者的目的。
- **ASI03 身份与权限滥用。** 代理自身的权限、凭据或委托访问被继承或提升。
- **ASI04 代理式供应链。** 在代理运行之前,已被投毒的工具、模型、插件或依赖项被信任。
- **ASI05 意外代码执行。** 代理的输出触及某个执行它的组件,如Shell、解释器或解析器。
- **ASI06 记忆与上下文投毒。** 被破坏的记忆或检索的上下文跨会话持续存在,并影响未来的推理。
- **ASI07 不安全的代理间通信。** 一个代理默认信任另一个代理的消息,因此被攻陷的代理可以操纵其对等体。
- **ASI08 级联故障。** 单个故障在代理和工作流间传播,累积成系统性影响。
- **ASI09 人机信任利用。** 批准代理操作的人员成为目标,被看似常规的摘要误导。
- **ASI10 非法代理。** 代理的行为偏离其预定目的,对其所有者采取敌对行动。
[](https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/)
在阅读下面的攻击阶段时,请牢记这些内容。每个阶段都是利用一个或多个此类弱点的地方,下一节将按顺序阐述这种利用过程。
杀伤链将攻击分解为有序阶段,从首次接触到最终目标,以便防御者能看到其运行过程并在任何步骤切断它。
原始的、洛克希德·马丁公司的网络杀伤链 (https://darkmarc.substack.com/p/the-cyber-kill-chain-lockheed-martins?utm_source=publication-search) 是为那个时代的威胁而构建的:高级持续性威胁,潜入后潜伏数月,因此其后续阶段关注于进入并停留。
网络杀伤链:洛克希德·马丁的网络攻击模型 (https://darkmarc.substack.com/p/the-cyber-kill-chain-lockheed-martins)
针对AI代理的现代攻击经历四个步骤:找到入口,让代理基于你的输入采取行动,将其转化为真实影响,并获取你想要的东西。
> 这是将网络杀伤链适配于AI代理的改编,而非一个新框架。它保留了原始的逻辑,并将其映射到代理攻击的实际流程。
[](https://substackcdn.com/image/fetch/$s_!JG-E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5b07fe6-5169-41fa-ac02-deff1a72f363_3200x1800.png)
[](https://substackcdn.com/image/fetch/$s_!rXiv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35682d9c-dd83-427e-b2a6-edb54dfbd242_3200x600.png)
无法攻击未被映射的目标。
对代理的侦察,就是将那五个问题转化为具体调查,并产出一样东西:你的输入从何处进入、代理能用它做什么、以及每扇门后是什么的完整地图。
后续所有工作都取决于这张地图的质量。这里的目标不是巧妙的提示,而是清单。
侦察分为无需与代理决策交互即可了解的信息,以及通过直接探测获得的信息。
在发送任何对抗性输入之前,先确定系统的形态。
**交付方式。** 公共网站、仅移动端的应用、API、Slack机器人、浏览器扩展。这首先决定了你的工具选择。
仅移动端的助手没有可监控的Web流量,因此查看其发送给后端内容的唯一方法是拦截来自手机的流量。
Web应用在浏览器自身的网络标签页中暴露其调用。交付渠道是塑造整个渗透测试的第一个事实。
**连接目标。** 你能从外部看到的每个集成:关联的账户、连接的数据源、宣传的工具、第三方服务。每个连接既是你的输入可能进入的地方,也是代理行动可能落地的地方。
每个代理都运行在某处。有一台机器,而这台机器有操作系统、网络服务、其他应用程序和运行时环境,在你触及任何AI特定部分之前。所有这些都是攻击面。
从物理层向上映射技术栈,因为一次突破很少停留在开始的层:对模型的影响变成运行时中的代码执行,进而获得对主机的访问,再进一步触及主机所在的网络。
**主机、操作系统和服务。** 代理运行的位置及其伴生组件:云实例、容器或无服务器函数,加上操作系统及其上的一切监听服务,从SSH到数据库再到内部API。
这些与你在任何服务器上枚举的东西相同,云元数据端点、挂载卷和相邻服务在你获得执行权限后都变得可访问。通常,代理是入侵途径,而主机才是战利品。
**运行时和沙箱。** 代理代码及其生成的任何代码在其中执行的环境:Python解释器、容器、WASM沙箱。
该边界的安全性决定了代码执行是保持受限还是演变为主机沦陷。
**框架和编排。** 将模型与其工具、内存和子代理连接起来的软件。具名框架有具名的默认设置和具名的弱点,而框架执行工具调用的方式(有些是通过生成并执行代码)常常是受控操作与任意执行之间的区别。
**模型及其防护栏。** 只有在这里,你才触及模型本身、其系统提示,以及任何筛查其输入输出的分类器。这是大多数人开始的地方。但它应该是你最后审视的地方,因为你已经跳过了它下方的所有层面。
主动侦察是通过系统对几个刻意选择的输入的反应方式,来揭示其构建方式。你尚未利用任何东西。你是从响应中解读架构。
一个偏离主题的问题通常足以暴露各层。问一些代理没有理由回答的问题,看看会发生什么。
如果它什么都没返回,可能只是带AI标签的关键词搜索。如果它礼貌地拒绝,说明有一个带系统提示的模型存在。
如果它在模型根本来不及推理之前,就以一种平淡、完全相同的拒绝回应,说明在代理前面有一个单独的分类器,在输入到达模型之前就进行筛查。
最后这种回应表明,你面对的是一个必须突破的网关。几个这样的问题,针对探测不同行为而选择,能告诉你代理背后是否有真正的检索,是否有防护模型在监控,以及系统提示的范围有多严格,而这一切都在你尝试任何有效载荷之前完成。
这是大多数测试人员跳过的步骤,但真正的攻击面就在这里。代理仍然是一个应用程序,其聊天框很少是唯一的输入。
输入分为两种,而第二种是人们容易忘记的。一种是某人直接发送给代理的,即交互式渠道:网页聊天机器人、移动应用、Slack或Telegram机器人、它回复的电子邮件地址、API端点。
另一种是代理自己无需他人指向就主动读取的,即摄取渠道:它总结的文档、它浏览的页面、队列中的工单和邮件、日历条目、检索的信息块、另一个代理的输出。两者都是输入。
交互式渠道是测试人员关注的地方;摄取渠道则是间接注入的生存之处,因为内容以指令形式到达,而转录中并无可疑用户。
在这两种类型中,最重要的是那些界面从未向你展示的路径。
- **备用输入字段。** 搜索框、过滤器、自动补全,每一个都可能通过不同于聊天的路径路由到后端,并且可能绕过对聊天施加的保护。
- **API参数。** 客户端发送的原始请求通常携带界面未暴露的字段,这些字段可能到达模型时受到的审查更少。
- **子代理和工具调用。** 主代理与其子代理之间的流量,或工具返回的结果,前端从不渲染,筛查层也常常不检查。
- **间接摄取点。** 代理自己读取的任何内容:文档、检索的信息块、邮件、日历条目、浏览的页面。这些永远不会出现在你发送的请求中,但它们同样是输入。
你发现它们的方式与在任何Web应用程序中一样:在客户端和后端之间放置代理,并读取实际流量。
Burp Suite、mitmproxy或浏览器自带的网络标签页会向你展示完整的请求结构,包括界面隐藏的字段。
当应用程序使用证书锁定来保护其流量时,你需要先在带有插桩工具的模拟器中击败锁定,使流量变得可读。
收益每次都是相同的:输入路径的真实地图几乎总是比聊天框暗示的更大,而受保护路径与未受保护路径之间的差距,常常就是整个攻击的关键。
侦察的输出是一份目标地图:
它包括你的输入可以进入的每一个地方、代理可以调用的每一个工具、这些工具背后的每一个凭据,以及它的行动可以触及的每一个系统。
一旦你开始探测,你首先寻找的是影响力的最早迹象,任何你的输入开始影响代理行为的通道。一旦你看到这一点,侦察就完成了,你已经找到了入侵途径。
[](https://substackcdn.com/image/fetch/$s_!Dg-3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc99054cc-f8c1-43b2-ac79-bb2c2f492777_3200x600.png)
利用,就是你的输入从代理读取的数据,跨越成为代理遵循的指令的那个时刻。
代理无法可靠地区分这两者,这就是关键所在,也是为什么这是没有预编译语句的注入:数据通道和指令通道在设计上就是同一个。
侦察告诉了你你的输入可以从哪里进入。利用则是让这些入口点之一来操纵代理。
渠道比任何单一有效载荷的措辞更重要,因为它们大多数是间接的,而间接渠道让你完全脱离了会话。
显而易见的渠道:你在代理的主要输入框中键入指令,试图覆盖其行为。这是最容易尝试的方式,也是每个防护措施都旨在捕捉的,因此在防御完备的目标上,攻击很少在这里成功。
但首先尝试它仍然值得,因为它确定了前门的基线,告诉你间接渠道需要绕过什么。
代理读取的内容远不止你键入的东西。它浏览页面、吸收文档、打开文件、总结邮件,而这些数据的内容被视为指令而非信息。
将指令隐藏在人类从不查看的地方:替代文本、HTML注释、元数据、屏幕外文本或零宽度字符中,代理会将它们读作命令。
这是注入危险的一半,因为转录中没有恶意用户,也没有可疑提示需要限速。一个能在代理索引的驱动器中放置文件的攻击者,就获得了一个持久的、零点击的指令通道进入系统。
相似文章
谷歌DeepMind研究人员揭示黑客劫持AI代理的多种方式
谷歌DeepMind研究人员发表了一篇题为'AI Agent Traps'的论文,该论文描绘了黑客用于劫持自主AI代理的六种攻击类型,包括content injection、semantic manipulation和behavioral control traps,并提出了分层防御措施。
[R] AI Agent 安全:威胁、防御与自主 AI 安全的未来完全指南 [R]
一份关于 AI Agent 安全的全面指南,涵盖 2026 年 4 月至 6 月的主要事件、防御架构及政府监管回应,综合了《The Agent Report》的 18 篇文章。
如何破解你的AI代理
一个实用指南,介绍如何通过多轮攻击测试AI代理,以揭示那些在孤立情况下看似无害但在交互中变得关键的漏洞。
我认为大多数AI代理的安全性远低于其开发者的预期
文章认为,AI代理安全常被过度强调,尤其是对提示注入的关注,而忽视了更广泛的风险,如未授权工具使用、数据访问和金融交易。它呼吁更多地关注代理在生产环境中实际可能被操控执行的任务。
我让100个代理来黑我(9分钟阅读)
作者进行了一项实验,使用100个自托管的AI代理来黑掉自己的账户,通过软件漏洞、暴力破解和社会工程学发现漏洞,同时突出了自主AI在网络安全中日益增长的风险。