REPORT
4 月 19 日,Vercel 發了一份 1 分鐘讀完的安全公告。地址:vercel.com/kb/bulletin/vercel-april-2026-security-incident
措辭克制,沒有時間線,沒有點名攻擊者
但同一天凌晨 2:02,BreachForums 上有人開始叫賣 Vercel 數據。這是一個數據黑市論壇,自稱 ShinyHunters 的賣家聲稱手里有 Vercel 的訪問密鑰、源代碼和數據庫,標價 200 萬美元
![]()
Vercel 官方安全公告,4 月 20 日已經更新過
影響速覽
憑證Vercel 已經直接聯系了受波及客戶。按 Vercel 說法,沒收到聯系的客戶,憑證和個人數據沒有理由被認為已泄露
環境變量打 sensitive 標簽的加密保護,目前沒有證據被讀取。非 sensitive 的需要立刻輪換
Next.js / Turbopack經供應鏈審計后確認安全,開源項目沒有 npm 投毒
Workspace 接了 Context.ai立刻審計 OAuth grant 并撤銷重新授權
![]()
從一個員工在用的第三方 AI 工具開始的攻擊鏈
事件發生時,Vercel 正在 IPO 前夕。它是 Next.js 的母公司,全球前端部署市場約 22% 的份額,Next.js 僅 npm 周下載就 600 萬次
Vercel 被攻破的入口,是一個員工日常用的第三方 AI 工具
一份惜字如金的公告
公告原文不到 200 個英文單詞
We've identified a security incident that involved unauthorized access to certain internal Vercel systems.
我們發現了一起涉及未授權訪問 Vercel 內部某些系統的安全事件
At this time, we have identified a limited subset of customers that were impacted and are engaging with them directly.
目前,我們已經識別出一小部分受影響的客戶,正在直接與他們溝通
整篇 bulletin 一分鐘讀完。沒有點名攻擊者,沒有披露范圍,沒有時間線。后面掛了一行 IoC:
INDICATOR OF COMPROMISE
110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com
這是 Google Workspace 上某個 OAuth client 的 ID。Vercel 建議所有 Workspace 管理員,立刻自查這個 app 有沒有出現在自家組織里
公告最后給了一個上下文:
the incident originated from a small, third-party AI tool whose Google Workspace OAuth app was the subject of a broader compromise, potentially affecting its hundreds of users across many organizations.
事件源頭是一個小型第三方 AI 工具,它的 Google Workspace OAuth app 在更大范圍內被攻破,可能影響了它在多個組織里的數百用戶
按 Vercel 的說法,這個第三方 AI 工具的 OAuth app 在更大范圍被攻破。Vercel 只是這數百用戶里的一個
攻擊者怎么進的內網
CEO Guillermo Rauch 在 4 月 20 日凌晨 4:08 UTC,在 X 上做了詳細復盤。這是把鏈路真正講清楚的第一手材料
事件源頭是一個叫 Context.ai 的企業 AI 平臺,被攻破了。Context.ai 給企業搭專用 Agent,Agent 訓練在公司自己的知識、流程和規范上
Vercel 的一名員工正在用 Context.ai。他授權給 Context.ai 的 OAuth scope,達到了 deployment 級別的 Google Workspace 權限。Context.ai 自己被攻破后,攻擊者順著這個 OAuth 拉鏈,拿下了員工的公司 Google Workspace 賬號
接下來是橫向移動。攻擊者通過這個員工賬號進 Vercel 內部環境,然后開始枚舉環境變量
Vercel 提供兩種環境變量:sensitive 和非 sensitive。打了 sensitive 標簽的,是加密靜態存儲的,攻擊者讀不到。但非 sensitive 那些沒加密,可以被讀到
攻擊者通過枚舉非 sensitive 環境變量,進一步拿到了更多權限
Rauch 的原話:
Vercel stores all customer environment variables fully encrypted at rest. We have numerous defense-in-depth mechanisms to protect core systems and customer data. We do have a capability, however, to designate environment variables as 'non-sensitive'. Unfortunately, the attacker got further access through their enumeration.
Vercel 所有客戶環境變量在靜態存儲時都是完全加密的,我們有多重縱深防御機制保護核心系統和客戶數據。但我們確實提供一個把環境變量標記為非敏感的能力。不幸的是,攻擊者通過枚舉這些變量,拿到了進一步的訪問權限
Vercel 自己設計的安全機制(sensitive 加密)攔下了關鍵憑證。但同一個產品的另一個能力(非 sensitive 不加密),反過來給攻擊者送了梯子
200 萬美元的賣單
公告發出之前幾個小時,BreachForums 上已經有人掛賣了
![]()
賣單 4 月 19 日凌晨 2:02 上線,標題是 Vercel Database Access Key & Source Code
發帖賬號叫 ShinyHunters,論壇認證管理員,1905 信譽分,2023 年 5 月加入,發了 42 個主題。配了一張證明截圖,是 Vercel 內部 user 表的 schema:
id, name, displayName, email, active, admin, guest, timezone, createdAt, updatedAt, lastSeen
這看起來像 IDP 的導出,不是客戶數據庫
明面要價 200 萬美元
賣家還在私信里說,用 BTC 付款的話,50 萬美元 就能成交
帖子里有這么一句話:
You send one update with a payload, and it will hit every developer on the planet who runs an installation or updates a package.
你發一個帶 payload 的更新,全世界每個安裝或升級這個包的開發者都會中招
這是 XZ Utils 2024 那個劇本的精確描述
X 用戶 @DiffeKey 把賣家和「VercelCloud」賬號的 DM 截圖放出來了
![]()
VercelCloud 讓對方別再騷擾員工,ShinyHunters 回 200 萬美元,BTC 付款 50 萬也接受
按網絡安全媒體 BleepingComputer 的核實,最近幾起聲稱是 ShinyHunters 干的攻擊,原 ShinyHunters 團伙否認參與。這個名字現在被多方借用,歸因要打折扣
Dev.to 上有人提到,賣家放出來的樣本里有 580 條 Vercel 員工記錄,含名字、郵箱、賬號狀態、活動時間戳
已確認的 vs 還在 claim 的
把 Rauch 的復盤和賣家的 claim 排在一起,差距很明顯:
![]()
左邊是 Vercel 公告 + Rauch 復盤里坐實的事,右邊是 BreachForums 賣單上的 claim
Rauch 明確說,Next.js、Turbopack 和 Vercel 維護的所有開源項目,經過供應鏈審計后是安全的
Vercel 周下載 600 萬次的 Next.js 沒事。這一句直接駁了賣家「全球供應鏈攻擊」的賣點
社區里另一位開發者 Theo Browne 在 X 上指出,從他能觀察到的范圍看,受沖擊最重的是 Vercel 的 Linear 和 GitHub 集成。打了 sensitive 標簽的環境變量,看起來明顯比普通環境變量保護得好
攻擊者「被 AI 顯著加速」
Rauch 在 X 上對這個攻擊團隊的形容:
一個高度復雜、且我強烈懷疑被 AI 顯著加速的攻擊團隊,以驚人的速度推進,對 Vercel 內部有深度理解
這是來自 CEO 視角的、第一手的判斷。攻擊者的技術底色和 AI 助力之間,至少是高度相關的
獨立研究員 Jaime Blasco(@jaimeblascob)在 Rauch 表態前幾個小時就把 Context.ai 鎖出來了。方法是把 Vercel 公告里掛出的 OAuth client ID,跟一個已被下架的 Chrome 擴展所使用的 OAuth grant,反查到同一個 Google account ID
Vercel 同時披露,正在和 Mandiant(Google 旗下的頂級事件響應公司)聯合調查,以及其他網絡安全公司、行業同行、執法部門。Context.ai 也被直接聯系,配合排查整個攻破事件的范圍
IPO 前夕
事件發生的時間點很微妙
幾天前剛有報道,Vercel 正準備 IPO,背景是過去一年 240% 的收入增長,主要來自企業級 AI 部署工作流的需求。IPO 前的 quiet period,企業跟投資者和公眾的溝通方式受法律嚴格限制
按行業第三方估算,Vercel 在現代前端部署市場占有約 22% 的份額
公告發出之后,Hacker News 上的討論 2 小時積累了 203 個贊、78 條評論。社區主要在抱怨溝通方式,事件本身倒沒引發集體抱怨
有人評論:
I've been part of a response team on a security incident and I really feel for them. However, this initial communication is terrible.
我在事件響應隊里待過,能體會他們的處境。但這次的初版溝通真的很差
另一條更刺:
Why am I reading about this here and not via an email? I've been a paying customer for over a year now.
為什么我得在這看到這件事,而不是收到郵件?我付費用戶都一年多了
現在該做什么
如果你是 Vercel 客戶:
自查 Workspace看里面有沒有那個 OAuth client ID 的 app
輪換環境變量把所有非 sensitive 的環境變量輪換一遍
打 sensitive 標以后所有敏感憑證都打 sensitive 標簽
鎖版本把 next、turbo、@vercel/* 鎖到已知安全的版本
查 CI檢查 npm install 有沒有異常
npm token給 npm org token 打開 2FA 和 publish-provenance
如果你接了第三方 AI 工具到 Workspace:
審計 token審計過去 30 天 OAuth-app-issued 的 token
撤銷重授權撤銷并重新授權所有 AI 工具的 Workspace OAuth grant
收窄 scope重新審視當時給出的 OAuth scope,是不是真的需要那么寬
Vercel 在公告里掛出的 IoC:
INDICATOR OF COMPROMISE
110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com
一個觀察
Context.ai 的安全系統并沒有被繞過,而是在被合理授權后、自己被攻破的
OAuth scope 給得越寬,被攻破的代價就越高。員工授權一個 AI 工具時點的那個「授權全部 Workspace 權限」按鈕,等于把企業內部的橫向移動通道,免費送給了任何一個能攻破這個 AI 工具的攻擊者
下次有 AI Agent 讓你點 OAuth 授權之前,可以先問一句:這個 scope,真的需要這么寬嗎
參考材料
→ Vercel 官方公告:vercel.com/kb/bulletin/vercel-april-2026-security-incident
→ CEO Guillermo Rauch 在 X 的復盤:x.com/rauchg/status/2045995362499076169
→ Jaime Blasco 的獨立溯源:x.com/jaimeblascob/status/2045960143209152981
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.