CASE FILE / 026-04-19 / OAUTH_SUPPLYCHAIN ACTIVE · P0 FILED 2026.04.21
◢   Incident Forensic Dossier Classification CRITICAL Pages 01 / 09

VERCEL ×context.ai

雲端開發平台 Vercel 揭露一宗資安事件,攻擊者取得其部分內部系統的未授權存取權。事件源頭並非 Vercel 本身,而是來自曾被員工使用的第三方 AI 工具 Context.ai——藉由 OAuth 憑證供應鏈,一台被 Roblox 外掛感染的筆電,橫向進入了 Vercel 內部環境。

Initial vector
Lumma Stealer
Pivot surface
OAuth tokens
Disclosed
2026.04.19 11:04 PST
Dwell time
≈ 30 days
Attacker demand
US$ 2,000,000
npm / OSS
UNAFFECTED

TL;DR 01

Context.ai 先遭入侵,攻擊者取得該工具的 OAuth 權限(含 Google Workspace 存取),進一步接管 Vercel 員工帳號,再橫向移動、進入 Vercel 內部系統。

過程中,攻擊者取得了一些未標記為敏感的環境變數(environment variables),並利用這些資訊擴大存取範圍。敏感變數因採密文儲存未外洩;Next.js、Turbopack 與 npm 套件經 Microsoft、GitHub、npm、Socket 四方確認未遭污染。

§ 02

Kill Chain
七步入侵全覽

Feb 2026 → Apr 2026
01 · INIT
Roblox 外掛
夾帶 Lumma
02 · HARVEST
憑證收割
Workspace / Supa
03 · PIVOT
Context.ai
AWS 遭入侵
04 · OAUTH
OAuth app
橫向濫用
05 · TAKE-OVER
Vercel 員工
Workspace 接管
06 · EXFIL
Env vars &
部分原始碼
07 · RESPONSE
Mandiant 進場
IoC 同步
§ 03

Detailed Flow
逐階段鑑識流程圖

Reconstructed Narrative
0
2026 · 02 Context.ai — 員工終端 Windows / Home

Roblox 外掛成為破口 — Infostealer delivered via game cheat bundle

Hudson Rock 追查發現,一名 Context.ai 擁有敏感存取權限的員工,在家中搜尋並下載 Roblox 「auto-farm」腳本與 executor。這類工具長期是資訊竊取器 Lumma Stealer 的已知傳播管道;執行後立即於背景展開憑證收割。

Malware family
LummaC2 · MaaS
Delivery
Roblox executor / auto-farm script
Initial host
Personal Windows endpoint
Detection at src
None (AV miss)
RESULT  瀏覽器 cookies、session tokens、保存的憑證,連同 clipboard 一併上傳到 C2。
1
Cred · exfil Google / Supabase / Datadog / Authkit

五把總鑰匙外洩,含關鍵的 support@context.ai — Entire corporate SaaS stack in one stealer log

從該名員工外洩的憑證涵蓋 Google Workspace、Supabase、Datadog、Authkit;其中最致命的是 support@context.ai 這組 administrative 等級帳號。這支帳號讓攻擊者不再只是「登入一個員工」,而是能在 Context.ai 企業租戶內提升權限、偽造支援流程、並操作 OAuth 應用本身的設定。

Workspace
Corporate G-Suite cookies + refresh tokens
Supabase
Project-level service-role key
Datadog
Logging / APM API key
Authkit
IdP-side session store
Crown jewel
support@context.ai
2
2026 · 03 AWS · Context.ai tenant

Context.ai 自家 AWS 環境遭未授權存取 — Attacker escalates from endpoint → SaaS tenant → cloud

Context.ai 自行揭露,其 AWS 環境出現未授權存取;他們偵測並阻擋了入侵者,但同時評估:部分消費級用戶的 OAuth tokens 可能已被竊取——這句話,正是日後災難擴散的關鍵。因為 Context.ai 是一款讀取使用者 Google 資料的 AI 工具,其手上握著代客戶持有的 OAuth 憑證

3
Chrome Extension Full-drive scope Removed 2026-03-27

被下架的 Chrome 擴充套件,是真正的橫向管道 — The OAuth app that could read any employee's Google Drive

Google 於 2026-03-27 將 Context.ai 的 Chrome 擴充套件下架——原因是其內嵌的 OAuth 權限過於氾濫,足以讀取使用者整個 Google Drive。OX Security 指出:涉事的 Vercel 員工正好安裝了這個擴充,並以企業 Google 帳號登入——從此,Vercel 的 Workspace 資料就透過這條合法的 OAuth 通道,留在了 Context.ai 的系統裡。

Scope requested
drive.read (全域)
Taken down
2026-03-27 by Google
Client ID #1
110671459871-30f1spbu0…
Client ID #2
110671459871-* (second app)
PIVOT POINT  攻擊者不再需要密碼、不需要 MFA code——只要拿到 Context.ai 保管的 OAuth refresh token,就能以 Vercel 員工身分讀 Drive。
4
Identity compromise Vercel 員工 · Google Workspace

Vercel 員工帳號被「取而代之」 — Sessions replayed, MFA bypassed via valid tokens

Vercel 官方公告的用字非常具體:攻擊者「取代(stand-in)」了該員工的 Vercel Google Workspace 帳號。這不是暴力破解、也不是釣魚登入——而是使用 Context.ai 洩漏出來的合法 session / refresh token 來重放登入,繞過 MFA、繞過地理位置風控。Vercel 稱攻擊者「操作速度快、對系統結構極為熟悉」。

5
Env vars · non-sensitive Vercel internal

那些「沒被勾選為敏感」的環境變數,被讀光了 — The default-plaintext tier became the blast radius

進入 Vercel 內部後,攻擊者存取了未標記為 sensitive 的環境變數——那些在 Vercel 舊預設下仍以明文可讀形式儲存的設定。標記為 sensitive 的變數採加密保管,Vercel 目前無證據顯示它們被讀取。事件後,Vercel 直接把「敏感」改為新建立環境變數的預設模式

Accessed
Plaintext env vars (non-sensitive tier)
Sealed
Sensitive-flagged vars (encrypted)
Product change
New default → sensitive
6
2026-04-19 BreachForums US$ 2M

駭客在 BreachForums 掛牌叫賣 — Access to DB keys + partial source code, priced at two million

攻擊者聲稱出售「資料庫存取密鑰與部分原始碼」,開價美金 200 萬。加密貨幣開發者社群同日一片慌亂,因為不少 web3 專案將 Vercel 作為前端托管、API keys 直接寫在 env 裡。OX Security 的建議很直白:所有 Vercel / Context.ai 客戶都應把自己視為已遭入侵,並立即輪替。

7
Incident Response Mandiant · Law enforcement

應變、通報、供應鏈隔離 — Coordinated disclosure across npm, GitHub, Microsoft, Socket

Vercel 聯合 Mandiant、其他資安公司與執法單位展開鑑識,並與 GitHub / Microsoft / npm / Socket 協同驗證——Vercel 發佈的任何 npm 套件皆未受污染。受影響客戶已被主動通知、更換憑證;事件期間 Vercel 服務本身持續正常運作。

Forensics
Mandiant + external IR
Supply chain
npm clean (verified)
Customer notify
Direct, limited scope
Service uptime
Unaffected
§ 04

Dramatis Personae
參與者一覽

Roles & Blame
◣ Threat Actor

Unknown

Hudson Rock 分析認定技術手法精密、動作迅速;熟稔 Vercel 內部架構;透過 BreachForums 掛牌與買家接觸。

Aliases · TBD
◣ Patient Zero

Context.ai

擔任 Google Workspace OAuth 中介的 SaaS;因員工個人電腦感染 Lumma,一路被橫向移動到自家 AWS 與 OAuth app。

Chrome ext — removed 03-27
◣ Downstream Victim

Vercel

因一名員工以企業 Google 帳號授權 Context.ai Chrome 擴充,成為 OAuth 供應鏈的受害者;非敏感 env vars 外洩。

Service · uptime unaffected
◣ End Victims

Customers

「有限子集」受影響;web3 / crypto 前端團隊最為緊張。尚未受損:Next.js、Turbopack、npm 套件、已 flagged sensitive 的 env。

Notified directly · rotate keys
§ 05

Impact Matrix
打中了什麼 · 沒打中什麼

Scope of Compromise

Confirmed Impacthit

  • 部分客戶憑證可能外洩,Vercel 已直接通知
  • 未標記為 sensitive 的環境變數被讀取
  • 資料庫存取密鑰、部分原始碼在 BreachForums 叫賣(開價 US$ 2M)
  • 涉事員工的 Google Workspace 帳號被接管
  • Context.ai 端:Google Workspace / Supabase / Datadog / Authkit / support@context.ai

Ruled Outsafe

  • Next.jsTurbopack 與 Vercel 旗下開源專案未受影響
  • npm 套件經 Microsoft · GitHub · npm · Socket 四方確認未遭污染
  • 標記為 sensitive 的環境變數(密文儲存)尚無被讀取證據
  • Vercel 服務可用性未受影響、持續正常運作
  • 尚無證據顯示攻擊者仍在 Vercel 環境內持續存在
§ 06

Timeline
事件編年

Feb → Apr 2026
2026 · 02Patient Zero
Context.ai 員工家用電腦感染 Lumma Stealer,來源為 Roblox 外掛與 auto-farm script。憑證、cookies、OAuth tokens 開始上傳 C2。
2026 · 03Enterprise pivot
Context.ai 偵測到自家 AWS 未授權存取,阻擋之;同時評估部分消費級用戶 OAuth tokens 可能外洩
2026-03-27Chrome ext. pulled
Google 下架 Context.ai Chrome 擴充套件——因其 OAuth scope 過大、足以讀取整個 Google Drive。
2026 · 03 / 04Lateral movement
攻擊者以被竊 OAuth token 重放登入,取代 Vercel 員工 Workspace 帳號,進入 Vercel 內部、存取 non-sensitive env vars、取出 DB keys 與部分原始碼。
2026-04-19 11:04 PSTPublic disclosure
Vercel 發佈第一版事件公告與 IoC;駭客於 BreachForums 以 US$ 2M 叫賣。
2026-04-19 18:01 PSTRoot cause confirmed
Vercel 指明源頭為 Context.ai,並發布初步建議。Hudson Rock 釋出 Lumma 感染關聯 分析。
2026-04-20 10:59 PSTScope clarified
Vercel 釐清「受損憑證」的定義,確認僅為 non-sensitive env vars。
2026-04-20 17:32 PSTSupply chain clear
Vercel 聯合 GitHub · Microsoft · npm · Socket 確認 npm 套件未受污染,同步 MFA 指引。
§ 07

If You Are a Vercel User
立即要做的 5 件事

Remediation Checklist
啟用 MFA(多因素驗證)

Vercel 帳號、Git 來源、Team 管理者層級都要開。OAuth token 外洩的教訓是:靜態密碼早已不夠

檢視 OAuth 應用授權

移除可疑第三方。特別是 client ID 開頭為 110671459871-兩個 Context.ai 應用;到 Google Account → Security → Third-party access 檢查。

輪替非 sensitive 環境變數密鑰

DB 連線字串、API keys、service role token——全部視為已外洩。重新產生並改以 sensitive 模式存放。

稽核近期部署與活動紀錄

檢查 audit log:有無陌生 IP、異常團隊成員變更、非預期部署 hook。尤其是 3 月 ~ 4 月間的動作。

拉高 Deployment Protection

至少設為 Standard,並輪替相關 protection bypass token。Preview 分支往往是被忽略的蜜罐。

▌  結語 · The pattern, not the novelty
這次攻擊沒用到任何新型 AI 技術,
卻揭示一個殘酷真相—
OAuth token,是新的橫向移動管道。

攻擊者只要攻破一家小型 AI/SaaS 廠商,就能靠對方代客戶持有的 OAuth 憑證,魚貫進入數百家下游企業。劇本從來沒變過:

Salesloft Drift Gainsight Context.ai × Vercel

Agentic AI 讓風險更嚴重——這類平台往往位於 OAuth 授權的中樞、手握大範圍權限,卻常由資安成熟度不足的年輕公司經營。除非業界開始把 OAuth token 視為高價值憑證來管理(最小權限、短生命週期、設備綁定、風控重放保護),否則同樣的新聞標題,只會不斷換個公司名字重演。

§ 08

Technical Appendix
指標與參照

IoCs & References
▌ Indicators of Compromise — OAuth Client IDs
110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj
.apps.googleusercontent.com

如在 Google Account → Security → Third-party apps 中看到此 client ID,請立即撤銷授權並輪替相關密鑰。第二個相關 client ID 的前綴亦為 110671459871-

▌ Key Dates (UTC-8 / PST)
FEB 2026     LUMMA INFECTION
MAR 2026     CONTEXT.AI AWS ACCESS
MAR 27, 2026  CHROME EXT TAKEDOWN
APR 19, 2026  VERCEL DISCLOSURE
APR 20, 2026  NPM VERIFIED CLEAN

事件屬於「緩慢燃燒型」供應鏈攻擊。從 patient zero 到公開揭露超過 60 天,從 OAuth 竊取到真正觸發 Vercel 端入侵亦有約 30 天 dwell time。