
本文档由英文原版机器翻译而成。如果翻译版本与英文原版之间存在任何冲突,请以英文原版为准。 阅读英文原版
不在其中:为什么针对 Caiioo 的 Context AI 式泄露将一无所获
2026-04-22 · Caiioo Team
2026 年 4 月 19 日,Vercel 披露一名员工使用的第三方 AI 工具遭到入侵,被盗取的 OAuth 令牌被用于渗透进 Vercel 的内部环境。一小部分客户的非敏感环境变量被泄露,加密/敏感环境变量未受影响。
该工具是 Context AI。该员工授予了其对企业 Google Workspace 广泛的“允许所有”访问权限。存储在 Context AI 服务器上的这单一 OAuth 授权,成为了后续一切攻击的杠杆点。
BreachForums 上的一名威胁行为者另外列出了据称以 200 万美元出售的 580 条 Vercel 员工记录。Vercel 尚未证实该列表。
事件尚未结束。但架构上的教训已经很明确,对于任何评估 AI 工作区的人来说,这都是非常有用的教训。
攻击的形态
SaaS-AI 模型将供应商置于你授予的每一次 OAuth 授权的中间。
当你安装第三方 AI 生产力工具并点击 OAuth 同意屏幕时,Google(或 Microsoft,或任何身份提供者)签发的访问令牌和刷新令牌不会留在你的设备上。它们被发送到供应商的服务器,因为需要这些令牌的 AI 运行在供应商的云端。供应商的基础设施为每一位用户持有了一套持续刷新的令牌,其权限范围通常是大多数用户在未阅读的情况下点击的“允许所有”。
这种中心化的令牌存储正是攻击者的目标。攻破供应商一次,即可获得成千上万客户的 Workspace 访问权限。Vercel 自己的公告警告称,下游影响可能波及“许多组织的数百名用户”。
报告将原始链条追溯到一名 Context AI 员工,其个人设备在 2026 年 2 月被入侵,据报道是通过下载带有 Lumma Stealer 信息窃取恶意软件的 Roblox 游戏漏洞实现的。该恶意软件窃取了该员工的 Google Workspace 和 AWS 凭据,进而解锁了 OAuth 令牌库。一个受感染的个人设备,一个企业 SaaS 库,导致了数百个下游 Workspace 受害。
三个架构层面的原因:针对 Caiioo 的 Context AI 式攻击将一无所获
Caiioo 是一个功能强大、隐私优先的工作空间,拥有代理编排器和在侧边栏运行的聊天界面。“隐私优先”描述的是一种具体的架构姿态,而非营销口号。这其中有三个具体的特性在起作用。
1. 您的 Workspace OAuth 令牌加密存储在您的设备上,而非我们的服务器上
当您在 Caiioo 中连接 Google 或 Microsoft 账户时,您会看到 Google 标准的 OAuth 授权屏幕,其中列出了您授予的权限范围。到目前为止,这看起来与授权 Context AI 完全相同。
结构上的区别在于授权流程产生的令牌去向。Google 签发的 access token 和 refresh token 会加密存储在您的设备上——在 macOS 和 iOS 上存储于 Keychain,在 Android 上存储于 Keystore,在扩展程序中则存储于浏览器的安全存储中。它们不会存储在 Caiioo 的中央数据库中。我们没有代表您持有这些令牌的令牌库。
当代理编排器需要读取您的日历或搜索您的收件箱时,API 调用会直接从您的设备发送到 Google,并附带来自您设备安全存储的令牌。我们的基础设施不在您任何 Workspace 内容的数据路径上。
您可以在源码中自行验证:src/shared/auth/connections-manager.ts 是持久化 Google/Microsoft OAuth 连接的地方。包括 accessToken 和 refreshToken 字段在内的 OAuthConnection 记录是通过本地存储适配器写入的,而不是传输到中央令牌存储。
2. 中继的消息总线是端到端加密的
当不同设备上的 Caiioo 组件需要协同工作时——例如您的浏览器扩展程序与桌面应用通信,您的手机与家庭服务器通信,或者侧边栏 UI 调用在 macOS 上原生运行的工具——它们通过我们托管在 relay.pebbleflow.ai 的中继进行。该中继是让您的设备跨网络找到彼此的汇合点。
该中继是端到端加密的。每个用户的设备通过中继信封进行密钥交换,从那时起,您的设备之间的消息从中继的角度来看就是密文。中继可以路由它们,但无法读取它们。
这并非愿景。处理 WebSocket 连接的 Durable Object(cloud/relay/src/user-relay.ts)被记录为:“管理单个用户的 WebSocket 连接。处理端到端加密消息(对中继透明)和密钥交换。” 处理 ENCRYPTED 消息类型的代码路径被明确注释:“发往特定客户端的加密消息(我们无法读取)。” 从架构上讲,中继无法检查其转发的消息内容。
3. 中继在构造上是每个用户单租户的
Caiioo 的中继构建在 Cloudflare Durable Objects 之上。每个用户都会获得自己的 UserRelay 实例——这是一个独立的、运行时隔离的计算和存储单元。不存在存储每个用户实时会话状态的共享多租户数据库,因为该角色根本不存在多租户数据库。每个用户的中继都是一个独立的对象。
这一点至关重要,因为它消除了“单一共享目标”的故障模式。即使攻击者找到了入侵某个用户 Durable Object 的方法,他们也无法横向访问任何其他用户的数据——因为没有可以作为跳板的共享后端存储。从结构上讲,每个用户都是自己的租户。
我们的中央数据库中有什么,没有什么
为了处理需要中心化的事务,我们确实运行着一个中央数据库 (Cloudflare D1)。诚实至关重要。该数据库存储:
- 账户身份: 您的电子邮件,如果您使用邮箱/密码登录则是您的哈希密码,如果您使用社交登录按钮则是 Google/Apple/Microsoft 返回的提供商 ID。
- 账单状态: 您的 Stripe 客户 ID、订阅层级、许可密钥和订阅状态。
- 针对 AI 推理提供商的每用户 API 密钥(特别是 OpenRouter)。这些是推理提供商凭据——与您的 Workspace OAuth 令牌不同。它们存在于托管额度流程中,以及希望自带 OpenRouter 密钥以在 Caiioo 的 AI 功能中使用的用户。
- 设备激活列表,用于许可证执行。
- 审计日志,保留以满足 SOC 2 证据要求。
- 选择性加入的入站 Webhook 路由表 (WhatsApp, Telegram 等) —— 仅在您配置了这些消息集成时使用。
该数据库不存储:
- 您的 Workspace OAuth 令牌 (Gmail, Calendar, Drive, Microsoft 365)。这些仅保存在您的设备上。
- 您的对话内容。智能体编排器在您的侧边栏中运行;对话保存在您的本地存储中。
- 您的 Workspace 数据 —— 电子邮件、日历事件、Drive 文件。这些直接从 Google/Microsoft 读取到您的设备,绝不经过我们的基础设施。
- 流经 WebSocket 转发器的任何消息内容。转发器仅能看到密文。
即使我们的中央数据库遭到泄露,也只会暴露账户/账单身份、审计日志和 OpenRouter 推理密钥列。它不会产生 Workspace 令牌、对话内容或 Workspace 数据,因为这些内容根本不在其中。
诚实的注意事项
这是一种不同的威胁模型,而非万能护盾。以下是一些我们宁愿由我们告知,也不愿让您在日后才发现的限制说明。
OAuth 代码交换会短暂经过我们的中继服务器。 Google(以及 Microsoft、GitHub、Slack)要求在令牌交换步骤中提供 OAuth client_secret,而该密钥无法内置在客户端代码中。因此,我们的无状态中继会附加 client_secret 并将您的授权代码转发给 Google,以换取实际令牌。令牌通过中继返回,并立即返回到您的设备进行存储。它们不会持久化存储在我们的基础设施中。这也是您使用过的每个原生集成 Google 的应用程序都有服务器组件的原因——这是 Google 的限制,而非 Caiioo 的设计选择。
自定义端点允许您完全绕过我们的 OAuth 客户端。 Caiioo 支持配置自定义 OAuth 端点,这意味着愿意在 Google Cloud Console(或 Microsoft Entra 等效平台)中配置自己 OAuth 客户端的用户,可以完全避开 Caiioo 的 OAuth 作用域和我们中继服务器的交换步骤。一旦配置完成,身份验证流程将在您的设备与 Google 之间进行,Caiioo 不会参与其中。我们没有将其作为面向普通消费者的设置,因为大多数用户不需要它,且默认架构已经能确保您的 Workspace 数据不进入我们的服务器。但该功能确实存在,任何以前在 Google Cloud Console 中设置过 OAuth 客户端的人都会熟悉其实现方式。
设备被攻破仍然是一个威胁。 如果您的笔记本电脑被控制,您的令牌也就被控制了。本地优先(Local-first)将攻击面从“供应商的金库”转移到了“您的终端”。这是一个更小且更易防御的表面,但它并非为零。
登录层级的“使用 Google 登录”与 Workspace 访问权限是分开的。 如果您使用 Google 或 Apple 登录 Caiioo 本身,该流程仅用于身份识别,并创建一个绑定到您账户的 Basic 连接。这与上述 Workspace 访问流程不是同一路径,也不会授予 AI 访问您的收件箱或日历的权限。
针对 Caiioo 本身的供应链攻击在理论上仍是可能的。 被攻破的更新渠道原则上可以发布从您的设备中窃取令牌的代码。我们在发布的每个平台上都通过代码签名和公证来缓解这一风险,但这种缓解措施与供应商金库模式不同——攻击者的经济成本也随之不同。
如何自行验证
诚实地讲,营销页面上的隐私声明很难让怀疑者完全信服。因此,以下是教你如何使用自己的工具来确认我们所言非虚的方法。
在使用 Caiioo 时运行网络监控工具。 macOS 上可以使用 Little Snitch,Windows 上可以使用 GlassWire,或者在任何系统上使用 Wireshark。正常使用 Caiioo 一小时。你将看到的流量及其连接含义如下:
| 目标地址 | 触发时机 | 含义 |
|---|---|---|
oauth2.googleapis.com, gmail.googleapis.com, calendar.googleapis.com, www.googleapis.com |
每当智能体读取你的 Workspace 数据时 | 你的设备使用设备上的 token 直接与 Google 通信。我们不在该路径中。 |
login.microsoftonline.com, graph.microsoft.com |
如果你连接了 Microsoft 365 | 模式相同,你的设备直接连接至 Microsoft。 |
api.anthropic.com, openrouter.ai, api.openai.com, generativelanguage.googleapis.com, localhost:11434 (Ollama) |
当你发送聊天或运行使用 LLM 的工具时 | 你的设备与你配置的任何 AI 提供商通信。我们不在该路径中。 |
relay.pebbleflow.ai (HTTPS) |
简短地出现在初始 Workspace OAuth 设置及定期 token 刷新期间 | 无状态的 OAuth 代码交换。Token 仅透传,不会在服务器端持久化。 |
relay.pebbleflow.ai (HTTPS) |
定期 | 许可证验证、发布说明/用户指南内容获取、模型智能数据、订阅状态检查。 |
relay.pebbleflow.ai (HTTPS) |
当你加载网站或查看已连接账户状态时 | 标准 API 流量。 |
relay.pebbleflow.ai (WebSocket) |
持续连接(如果你安装了多个 Caiioo 组件,如扩展程序 + 桌面应用,或移动端 + 桌面端) | 让你的设备之间能够相互通信的能力桥梁。端到端加密。我们仅能看到密文。 |
relay.pebbleflow.ai/api/messaging/... |
仅当你配置了消息集成(WhatsApp, Telegram, Slack 入站)时 | 用于接收消息的 Webhook 路由。 |
你永远不会看到的情况:
- 你的 Workspace 数据(电子邮件、日历事件、Drive 文件)流向
relay.pebbleflow.ai。这些调用直接从你的设备发往*.googleapis.com。 - 你的对话内容流向
relay.pebbleflow.ai。编排器在你的侧边栏中运行;聊天历史记录存储在你的本地存储中。 - 你的 AI 提供商 API 密钥流向
relay.pebbleflow.ai。它们保存在你的设备上。(例外情况:如果你使用托管额度模式,你使用的是服务器分配的 OpenRouter 子账户,但推理调用仍是从你的设备发起的。)
如果你发现从你的设备发往我们基础设施的请求不符合上表描述,那就是一个发现。请告知我们,我们会予以解释或修复。
如果你是 Vercel 或 Context AI 客户该怎么办
Vercel、Context AI 和安全研究社区发布的指南已汇集成一份一致的清单:
- 轮换每一个密钥,即作为非加密 Vercel 环境变量存储的密钥。据报道,加密/敏感变量未受影响,但轮换成本很低。
- 审计你团队在 Google Workspace(以及 Microsoft 365,如果适用)上的第三方 OAuth 授权。撤销任何你不认识的授权,并将任何你授予了广泛“允许所有”范围的工具视为需要更换的凭据。
- 收紧未来的同意。 优先选择请求最小权限范围的工具,并优先选择其架构根本不需要你移交长期令牌的工作区。
第三点是结构性的举措,也是这次事件一直在悄然推荐的做法。
试用 Caiioo
如果 Vercel/Context AI 事件的教训是 OAuth 令牌的位置决定了供应商被攻破时的受影响范围,那么答案就是选择一个不持有这些令牌的工作区。
Caiioo 是一个强大且隐私优先的工作区,拥有在侧边栏运行的智能体编排器和聊天界面。提供浏览器扩展程序、原生 macOS 应用、原生 iOS 应用、原生 Android 应用,以及适用于 Windows 和 Linux 的桌面应用。免费开始使用。
来源: