安全与人工智能新闻

AI 代理安全 · 作者 FireAI Security & Research Team · 发布于

Salt Labs 用一封邮件劫持 Manus AI 代理:把提示注入编码为 JSFuck

Salt Labs 于 2026 年 10 月 1 日报告,一封经过混淆的邮件让 Manus 代理运行代码并打开反向 shell,防护机制直到代码执行之后才触发。该漏洞已修复。

An AI agent icon and the FireAI research mascot, next to the words “One email hijacks an AI agent.”

Salt Labs 的研究人员于 2026 年 10 月 1 日发布了一份说明,介绍他们如何绕过 Manus AI 代理的提示注入防护,并通过一封邮件实现代码执行 [1]。SC Media 援引 TechRadar 也报道了这项研究,并指出这一具体漏洞此后已通过漏洞赏金计划得到修补 [2]。这一案例与把 AI 代理连接到邮箱和其他帐户的 Mac 用户相关。

背景

提示注入是把指令放进 AI 代理会读取的内容中,使代理把它们当作命令执行。Salt Labs 选择 Gmail 集成作为目标,因为电子邮件是许多帐户的主要身份提供方。据该说明介绍,代理在一个云端沙盒中处理邮件,使用基于模型上下文协议(MCP)的工具和用户的 OAuth 令牌 [1]。

研究内容

研究人员报告称,普通的 shell 命令注入被平台的防护机制检测并拦截,Base64 编码的变体也被检测出来。随后他们把载荷编码为 JSFuck,这是一种只用极小字符集编写 JavaScript 的特殊方式,并在邮件中要求代理用 Node.js 对其解码。代理调用了 Node.js 运行时,在其服务器端环境中执行了任意 JavaScript [1]。

之后,载荷被扩展为在沙盒内运行系统命令,并建立一个连回攻击者基础设施的反向 shell。由此,他们获取了 Gmail OAuth 令牌、工具接口以及已连接服务的凭据,并可能访问 Google Drive 和 GitHub 等服务 [1]。核心发现是一个时间差:防护机制检测到了攻击,但那是在“代码已经运行之后” [1]。SC Media 将其中的教训概括为:检查提示是必要的,但并不充分,防护必须延伸到代理跨工具、API 和系统所采取的行动 [2]。

该说明表示,这一具体漏洞已通过 Meta 的漏洞赏金计划提交,现已解决,不再可被利用。说明没有给出披露时间线 [1]。

对 Mac 用户的影响

在这一案例中,代码是在厂商的云端沙盒中运行的,而不是在 Mac 上,因此暴露的是代理所持有的令牌和已连接的帐户 [1]。其中的普遍道理同样适用于本地代理:代理读取的内容可能携带指令,而只检查提示的防御可能为时已晚。

建议

  1. 只把 AI 代理连接到它所需要的帐户,在服务提供只读权限时优先使用只读权限。
  2. 定期检查每个代理已连接的服务和令牌,撤销不再使用的部分。
  3. 把代理读取的任何邮件、网页或文档都视为不可信的输入。
  4. 优先选择在执行命令、修改文件和访问新网络目标地址时需要批准的代理。
  5. 留意 Mac 上的代理访问了哪些网络目标地址,并调查新出现的目标地址。

与 FireAI 的关系

FireAI 的代理配置文件(Agent profile)会识别 Mac 上的 AI 代理,学习每个代理通常连接到哪里,并仅凭主机名和字节数,把首次出现的目标地址或上传激增标记出来供用户审阅。在更严格的模式下,它会拦截新的目标地址,直到用户允许为止。

FireAI 不在厂商的云端运行,因此无法看到或阻止 Manus 沙盒内部发生的事情。它不读取邮件或提示,不判断一条指令是否属于注入,也不读取加密连接的内部内容。它作用于在 Mac 上运行的代理的网络一侧。

局限

技术细节出自研究人员本人,本文通过 Security Boulevard 的转载阅读,未进行独立复现。这些来源没有报道研究人员之外的任何人利用过该漏洞,也没有给出修复日期。SC Media 指出,除 JSFuck 之外,很可能还会出现其他巧妙的绕过方式 [2]。

免费试用 HisnLabs 的 FireAI 17 天。

来源

  1. Salt Labs via Security Boulevard, 1 October 2026: How We Hijacked an AI Agent With a Single Email
  2. SC Media, 3 October 2026: Researchers bypass AI agent protections with JavaScript obfuscation