Vercel 在 2026 年 4 月 19 日披露了一起供应链入侵。按公开信息看,攻击大约始于 2024 年 6 月。入口不是已公开确认的 Vercel 代码库直接失陷,而是 Context.ai 的 Google Workspace OAuth 应用先被攻破,攻击者再借此进入一名 Vercel 员工的 Workspace,随后横向进入内部系统。
最值得注意的点很直接:攻击者最终枚举了部分客户项目的环境变量。官方没有说是全量客户,也没有公开完整受影响范围。但对把 OpenAI、云平台、支付凭证放进 Vercel 环境变量的团队来说,风险已经足够具体。
发生了什么,为什么这不是普通账号被盗
这条攻击链并不复杂,危险在放大效应:第三方 OAuth 应用失守,旧令牌继续存活,内部系统被访问,客户环境变量被读到。密码轮换能挡住一部分事,挡不住已经发出去的 OAuth 令牌,这才是麻烦。
| 关键点 | 已确认信息 | 对客户意味着什么 |
|---|---|---|
| 初始入口 | Context.ai 的 Google Workspace OAuth 应用被攻破 | 风险源头是第三方 OAuth 信任,不是目前已公开确认的 Vercel 代码库直接失陷 |
| 横向进入 | 攻击者借员工 Workspace 访问进入 Vercel 内部系统 | 一次供应商失守,被放大成平台内部访问问题 |
| 数据范围 | 枚举了部分客户项目环境变量,非全平台全量已确认泄露 | 托管了下游凭证的项目需要按高风险处理 |
| 关键机制 | 未标记为敏感的环境变量在内部访问下可读 | 不是“所有变量明文裸奔”,但足以造成下游密钥风险 |
| 披露时间 | 入侵约始于 2024 年 6 月,2026 年 4 月才公开 | 暴露窗口很长,客户轮换与排查压力更大 |
这里有个边界要说清。现有公开材料支持的,是“部分客户项目受影响”。不能把它写成“全平台客户全部泄露”。同样,也不能把外界关于售卖数据、攻击者身份等说法当成已经法证坐实的结论。
但有一处时间差,确实值得警惕。至少有一名公开发声的客户称,自己在 4 月 10 日收到了 OpenAI 的泄露密钥提醒,比 Vercel 公告早 9 天。仅凭这一点,不能断言 Vercel 当天已知情;能说的是,至少有部分下游凭证风险,可能在正式披露前就已经进入外部检测视野。
对安全负责人来说,这不是语义差别。你什么时候知道,决定了你什么时候开始轮换、审计、止损。
真正刺眼的,是平台把 OAuth 和环境变量都设计得太松
Vercel 的说法是,客户环境变量以静态加密方式存储,但允许用户把一部分变量标记为“non-sensitive”。攻击者在取得内部访问后,可读取这部分内容。这个表述要准确理解:不是所有环境变量都裸露在那里,而是平台的敏感性模型让“内部可读”成为现实攻击面。
问题在这里。真实攻击里,攻击者不按你后台的标签体系办事。他只看那串字符串能不能换来更多权限。一个 OpenAI key,一个 AWS 令牌,一个 Stripe secret,只要被放进环境变量,就不是“顺手配置”,而是下游入口。
我不太买账的,正是这种分级逻辑。把敏感与否更多交给用户手工判断,再默认内部访问具有较高可见性,本质上是在赌所有团队都会正确标记、所有内部边界都不会失守。这个赌法很熟悉,也经常输。
“天下熙熙,皆为利来。”平台喜欢把密钥托管包装成开发效率:部署更快,协作更顺,迁移成本更低。用户也愿意接受,因为确实省事。可一旦出事,便利是平台先赚到,轮换、排查、业务中断和合规压力,往往是客户先吞下。
如果你是两类人,这事尤其不能当别人家的新闻:
- 把 API key、云凭证、支付密钥放在 Vercel 的开发团队:现在该做的不是等范围说明,而是把这批凭证当成可能暴露处理。优先轮换 OpenAI、Anthropic、AWS、GCP、Stripe 等高价值密钥。
- 管 Google Workspace 和 SaaS 授权的安全负责人:要回头审计所有第三方 OAuth 应用授权,把它们当供应商入口,不是浏览器小插件。权限过大、长期不用、来源不清的授权,都该清掉。
现实限制也得承认。不是每个团队都能一夜之间把所有 secrets 迁到专用密钥管理系统,也不是所有服务都支持短期令牌。但至少要先做两件事:高价值密钥先轮换,万能型凭证先拆分。别再让一把钥匙通吃生产链路。
从 Codecov、CircleCI 到 Vercel,平台迟早会变成密钥集中地
这不是第一回。Codecov 碰过 CI 凭证,CircleCI 也让客户大规模轮换 secrets。今天轮到 Vercel,场景从 CI/CD 又走到 PaaS 环境变量。历史不完全一样,但结构很像:开发者把更多下游权限交给上游平台,上游为了易用性和留存,把这些权限集中托管,最后任何一次平台级失守,都会变成客户级连锁反应。
这也是我更在意的地方。很多事故被讲成“高级攻击”或“个别员工受骗”,听着像偶发事件。其实更像长期激励的结果:平台追求顺滑接入,用户追求少折腾,安全边界就在一层层便利里被磨薄了。火不一定天天着,但柴一直在堆。
接下来真正该盯的,不是公关措辞,而是四个变量:
- Vercel 最终会披露多大的受影响客户范围。
- 被枚举的环境变量,实际涉及多少高价值下游凭证。
- 平台会不会调整“non-sensitive”环境变量的默认可读策略。
- Vercel 会不会收紧内部系统对客户环境变量的访问权限与审计机制。
如果这几件事说不清,这次披露就还停留在止血。病灶没有动:OAuth 还是供应商入口,环境变量还是密钥仓库,客户还是最后一棒接盘的人。
