返回所有文章
发布于 · 作者 Renaud Deraison

他们把你的智能体加进了名单

Gen Digital 在 9 月 8 日公布的研究显示,八个常见的信息窃取木马家族如今开始收集 AI 编码智能体的本地数据:访问令牌与刷新令牌、MCP 配置、会话数据库、提示词历史、项目痕迹。这与 Claude、Cursor 或 Codex 的任何缺陷都无关。窃取木马带着远程管理的收集规则,所以把你智能体的文件夹加进去,只是向那些早已被感染的机器推送了一次配置更新。Bromure Agentic Coding 把那个文件夹搬进 VM,用 brm- 假货把它填满,并把刷新令牌留在宿主机上,客户机永远拿不到它。

你的编码智能体没有任何等着被人发现的漏洞。有人注意到它把文件放在哪里,然后向 几十万台早已被攻陷的机器推送了一行新的配置。

9 月 8 日,带领 Gen Digital 威胁研究团队的 Jan Rubín 发表了一篇短文, 讲了一个毫不炫目的发现。八个不同的常见信息窃取恶意软件家族,如今开始收集 AI 编码 智能体的本地数据。它们复制文件。整套手法就这些。

被点名的目标读起来像一份关于开发者今年装了什么的问卷:Claude、Cline、Codex、 Continue、Cursor、OpenCode、Kilo。Amatera 冲着 Cline 和 Continue 去。Remus 冲着 Claude、Cursor 和 OpenCode 去。CallbackBeaver 加上了 Cursor 和 Claude, Gen 在三十天的窗口里数到它的样本超过 5,000 个。BeeStealerSTG StealerHydraStealerAPEX StealerOtter Stealer 都在做同一件事的某个版本。 在 macOS 上这个变种叫 Djinn Stealer,它的清单最长:Claude、Codex、Gemini、 Cline、OpenCode、Kilo。

Rubín 对自己在描述什么很谨慎。“这些活动并不指向 Claude、Cursor 或 Codex 中新发现的 缺陷,”他写道,“它显示的是犯罪分子在改造已有的窃取木马,去收集那些放在可预测的本地 文件夹里的有价值文件。”

名单长了一行

这次改动几乎没让作者付出什么。

现代的窃取木马不会把拿什么写死在代码里。它们随身带着远程管理的收集规则:一份 配置数据块,列出文件夹、文件名、数据库文件、扩展名和搜索上限,从运营者的基础设施 取回。加一个新目标,按照 Cyber Press 的总结, 就是运营者“通过更新路径、文件名或数据库规则,把新近流行的 AI 工具加进恶意软件的 收集清单,而不必重新构建恶意软件”。

这是一个产品决策。有人看了看现在哪些文件夹里装着值钱的东西,往配置里写了几条路径, 于是那些本来就在跑这些家族之一的机器,在下一次回连时开始上传智能体的数据。运营者 没有重新感染任何东西。磁盘上的二进制没变,检测特征也就没变。

Gen 记录到,2026 年上半年有 330 万名独立的受保护用户被检出信息窃取木马,月度 总量超过 50 万。仅 Amatera 和 Remus 两家,在三个月里就出现在数万名用户身上。那就是 运营者把新规则推送过去的人群。

一次配置推送,不是一场行动运营者 — 收集规则浏览器、Cookie、钱包Slack、Discord、VPN 配置ssh 密钥、云存储路径+ AI 编码智能体目录九月,追加的一行下次回连已经被感染的机器330 万独立用户,2026 上半年每月 50 万次以上检出磁盘上的二进制没变不需要重新感染没有新特征可抓离开这台笔记本的东西访问令牌 + 刷新令牌MCP 服务器凭据会话数据库提示词历史项目名、缓存的源码账户与订阅详情八个家族,一个季度Amatera · Remus · CallbackBeaver · BeeStealer · STG · Hydra · APEX · Otter — macOS 上还有 Djinn
把 AI 编码智能体加进战利品清单,没让运营者多做一次构建。常见的窃取木马会从运营者那里取回远程管理的收集规则(文件夹、文件名、数据库文件、扩展名)。运营者追加上智能体的目录,每一台早已被感染的机器就在下一次回连时开始收集它们。磁盘上的二进制没有改动,所以这台机器看上去没有任何不同。

那个文件夹里有什么

Gen 对规则收集内容的清点很具体:“访问令牌与刷新令牌、存放在 MCP 配置里的凭据、 提示词历史、会话数据库、账户详情,以及一个开发者一直在做的那些项目的痕迹。”

这份清单把两种性质不同的损失放在了同一个名字底下。

第一种是访问权。一个访问令牌买到一次会话。一个刷新令牌买到多次会话,只要它还 有效就一直买得到,因为有人就是把它设计成比它出身的那次会话活得更久。正是这个性质 让它值得被偷,也正因如此,吊销一次会话并不能把窃贼从原地赶走。就在同一个文件夹里 紧挨着它的,是你 MCP 配置里的凭据,而它们打开的是另一样东西:一个内部服务、一套 工单系统、一个藏在 HTTP MCP 服务器背后的数据库。

第二种损失是情报,而且更新鲜。你的提示词历史,是一趟关于你雇主基础设施的导览。 Cyber Press 说得很直白:被偷走的提示词历史会暴露“仓库名、内部主机名、基础设施细节、 安全控制措施、API 机密和业务计划”。某个周二,你敲进服务的名字、集群的名字、迁移 卡住的原因,然后粘上那段带着连接串的片段,问它为什么老是失败。你从来没有为自己的 聊天记录写过一份威胁模型。

它是从一条搜索结果里来的

把窃取木马放上机器同样不需要零日漏洞。五月,EclecticIQ 记录了一场 把假冒安装页面排到真页面之上 的活动:claudecode.co.comgeminicli.co.com,模仿厂商文档模仿得足够像,一眼 扫过去看不出来。页面递给你一行 PowerShell 让你复制。你一执行,就拿到了想要的工具, 明明白白装好,同时第二条藏起来的命令把一个无文件的窃取木马直接拉进内存。它进来的 路上关掉 ETW 和 AMSI,然后收割浏览器、Slack、Teams、Discord、VPN 客户端、SSH 密钥 和云存储路径。同一个团伙对 Node.js、Chocolatey、KeePassXC 和 Monero 用过同样的招。

于是受害者,就是那个搜索编码智能体并点了第一条结果的开发者。四个月之后,这位开发者 连智能体的令牌和会话历史也一并交了出去,因为收集规则长了一行。

同一次清扫,发生在 Bromure 工作区里

Bromure Agentic Coding 把每一个编码智能体都放进你 Mac 上一台硬件虚拟化的 Linux VM 里跑,并把每一份真正的机密都留在这条边界的宿主机一侧。把 Gen 的收集清单一项一项拿 出来,对着一个工作区跑一遍。假设窃取木马在宿主机上赢了,读到了规则,然后挨个去取。

访问令牌与刷新令牌。 如果你用的是 Claude 或 ChatGPT 的订阅而不是 API 密钥, 登录根本不会发生在你的工作 VM 里。Bromure 会启动一台一次性的注册 VM,不挂载任何 工作区文件夹,也不带凭据替换表,在里面运行真正的 claude login,在宿主机上捕获 拿到的 OAuth 令牌,加密保存,然后销毁这台 VM。从那以后,客户机在 API 密钥模式下 运行,手里拿的是一份确定性的假凭据:给 Claude 的是假的 ANTHROPIC_API_KEY,给 Codex 的是一个 ~/.codex/auth.json,里面种着一个到期时间远在未来的假 JWT,好让 客户端永远不会自己去刷新。刷新是宿主机做的,大约在到期前五分钟,为每一台运行中的 VM 各做一次。手册把结果说得很直白:客户机永远不持有刷新令牌。

存放在 MCP 配置里的凭据。 MCP 的 bearer 得到同样的待遇,设置面板上就这么写着。 HTTP 传输的 MCP 服务器,真正的令牌留在宿主机上,智能体读到的配置里是一个 brm-mcp_… 占位值,代理在线路上把真值换进去,范围严格限定为该服务器主机的完全 匹配或子域匹配,别处一概不行。MCP 面板里的这个字段带着说明 绝不发送进 VM——由代理替换

其他所有看起来像密钥的东西。 你配置的每一份凭据,在 VM 内部都会被一个保持结构的 假货替换掉,它由真值加上每次安装独有的盐派生而来,因此保留着校验器期待的形状,并在 不同会话之间保持稳定:sk-ant-api03-brm-…sk-brm-…xai-brm-…brm-k8s-…brm-docker-…brm-db-…。替换通道只朝一个方向流动。宿主机可以把假货写进客户机; 不存在任何让客户机反过来索要真值的调用,而 VM 内的智能体会拒绝写入任何不带 brm- 前缀的凭据。

会话数据库、提示词历史、项目引用、缓存的源码。 这些都是真的,而且是持久的, 因为写代码这件事需要持久状态。它们住在工作区 VM 自己的持久家目录里,一个工作区一份, 在虚拟化层的另一边,而不在收集规则点名的那个 macOS 家目录里。一条写着“从用户配置 文件里复制智能体的配置目录”的规则,找到的是一个里面没有智能体的用户配置文件。

宿主机自己的存储。 宿主机保存的东西,用每次安装独有的 256 位主密钥以 AES-GCM 静态加密,那把密钥存放在 macOS 的 Data Protection 钥匙串里,限定于应用的签名身份, 并关闭了 iCloud 同步。这个应用不上传也不同步任何东西。把 Application Support 文件夹整个复制走,或者恢复它的一份 Time Machine 备份,没有这台 Mac 的钥匙串条目, 你拿到的只是密文。

在工作区里跑一遍收集规则规则要什么它找到什么访问令牌 + 刷新令牌一把假密钥;VM 里根本没有刷新令牌宿主机在到期前约 5 分钟,为所有 VM 一次性刷新MCP 配置brm-mcp_…真正的 bearer 在线路上换进,只限那台主机API 密钥、云凭据sk-ant-api03-brm-… · brm-k8s-… · brm-db-…形状对、值不对,出了范围就是死的会话库、提示词历史真实、持久 — 但在 VM 的家目录里,不是你的规则里的那条路径,指向一个你的 Mac 没有的文件夹
把 Gen Digital 的收集清单一项一项,对着一个 Bromure Agentic Coding 工作区跑一遍。订阅令牌在宿主机一侧,刷新也在宿主机一侧完成,所以客户机永远不持有刷新令牌。智能体配置里的 MCP bearer 是一个 brm-mcp 占位值。API 密钥是保持结构的假货。会话数据库和提示词历史是真的,而它们放在 VM 的持久家目录里,不在规则所指的那个 macOS 家目录里。

当清扫发生在 VM 内部

窃取木马也可以从另一头进来:由智能体自己拉进来,经由一个依赖或者一段被投毒的指令, 然后在工作区内部运行。那样清扫就成功了,而它收集到的是假货。真正翻车的是上传那一步。

每一个假货都只有一个合法的目的地家族,也就是它被铸造时对应的主机范围,所以代理会 扫描每一个外发请求的头部和正文,用一个便宜到可以对所有流量都跑的 Aho-Corasick 自动机,寻找跑向不属于自己的地方的假货。一旦命中,它就以 HTTP 451 拒绝该请求, 一个字节也不转发,当场把 VM 暂停,并抛出一条告警,提供关机保留以供调查 (先把磁盘、家目录与共享文件夹导出以便取证)或者自担风险的继续。这个事件会作为 一条红色的 Credential brokering 记录落在 Security Timeline 里,应用把该工作区 标记为已受损,下一次启动需要擦除并启动

代理还会标记外发流量里未被替换、看起来像真的机密:带有 sk-ant-ghp_AKIA 这类已知前缀的 Bearerx-api-key 值,以及二十个字符以上的不透明令牌。它们会 出现在 Trace Inspector 和 bromure-cli trace leaks 里。它们通常意味着有人手工把一份 真正的机密粘进了 VM,而那是唯一能从内部拆掉这条边界的办法。

可达性是第三道检查。每个工作区都带着一份有序的出口防火墙,覆盖动作、协议、主机或 CIDR、端口,对于 web 流量还覆盖到单个 HTTP 动词,并为未匹配的流量提供一个分段控件。 新工作区放行所有没被规则匹配到的流量。把它设为拒绝,列出工作真正需要的东西, 窃取木马的 C2 主机就不在这份清单上。客户机之外的两个部件负责执行:虚拟网络交换机按 目的 IP 和从 DNS 里嗅到的主机名匹配每一条流,代理再按 TLS 服务器名匹配一次。你对 规则的修改无需重启就能到达正在运行的会话。

状态就在你的家目录里一条可预测的路径,任何以你身份运行的东西都能读智能体的目录访问令牌 · 刷新令牌MCP bearer 令牌会话数据库提示词历史 · 项目名常驻的窃取木马读规则、复制文件夹二进制从没变过;变的只是那份路径清单已上传可续期的访问,外加一张资产地图状态在一台 VM 里,而且是诱饵你的 macOS 家目录里没有智能体目录可点名工作区 VM — 持久家目录假密钥 · 没有刷新令牌brm-mcp_… · brm-k8s-… · brm-db-…会话数据库与历史,在虚拟化层的另一边真值在宿主机上加密,AES-GCM,钥匙串密钥vsock 8443 — 唯一的出口宿主机代理 — 每个请求都要问过出口防火墙 · 主机、端口、HTTP 动词替换 · 真值只注入给一台主机每个请求一行追踪,就在你的机器上假货跑出范围 → HTTP 451、VM 暂停、时间线一行
放置智能体状态的两个地方。在一台普通的 Mac 上,令牌、MCP 凭据和会话历史都在用户配置文件里一个可预测的文件夹中,那正是收集规则点名的地方,任何以你身份运行的东西都能读到它。在 Bromure Agentic Coding 的工作区里,同样的状态放在一台 VM 的持久家目录里,里面的凭据是 brm- 假货,而唯一的对外路径是通往宿主机代理的 vsock 端口 8443,那个代理会核对防火墙、替换凭据,并拒绝任何跑出自己范围的假货。

如果你是靠复制粘贴装智能体

查一查你是从哪儿拿到的。EclecticIQ 追踪的那场活动把 claudecode.co.comgeminicli.co.com 排到了真页面之上,递给访客一行 PowerShell,它一边装上正版 工具,一边把窃取木马拉进内存。如果这描述的正是你做过的某次安装,就把整台机器 当作已经暴露:吊销订阅会话,而不是只轮换一把密钥;把 MCP 配置里的令牌全部轮换; 再用攻击者的眼光重读一遍自己的提示词历史。里面的主机名和仓库名,是你轮换不掉 的那部分。

缩小靶面的两个设置

通过工作区编辑器注册你的 Claude 或 ChatGPT 订阅,这样 OAuth 令牌会在宿主机上 被捕获,客户机跑的是一把假密钥。然后打开 Guardrails,把未匹配的流量设为 拒绝,并列出工作真正需要的东西:allow web api.github.comallow web registry.npmjs.orgdefault deny。一次会话之后运行 bromure-cli trace hostnames my-workspace,就能看到智能体接触过的每一个主机 以及次数。

战利品跟着普及走

窃取木马学习文件夹的顺序是可以预料的。先是浏览器配置文件,然后是加密货币钱包, 然后是 Discord 和 Slack 的令牌,然后是 VPN 配置。每一样都是在它所属的那个东西变得 稀松平常之后一两年,才进入收集规则的。这段滞后,就是要等到足够多的机器都有那个 文件夹,写下那一行配置才划算所需的时间。

编码智能体今年越过了那道门槛,入场价是一次配置更新,横跨八个家族,就在一个季度 之内。没有补丁能补上这件事,因为什么都没坏。文件夹就在它该在的地方,装着它该装的 东西,而那台机器上同时还跑着你的浏览器和你的邮件。

能改变结局的,是让那个文件夹不值得别人费力去复制。把智能体的状态放到虚拟化层的 另一边,用形状正确、数值错误的值填满它的凭据文件,把真的留在宿主机上,让刷新在那里 发生。

你的编码智能体是一个普通的应用程序,把普通的文件放在普通的地方,而这正是它被加进 名单的原因。在下一个家族更新它的配置之前,先决定这些文件被允许值多少钱。 安装 Bromure Agentic Coding,让他们去复制诱饵吧。