TL;DR

Ngày 19/04/2026, Vercel công bố sự cố bảo mật: một OAuth app của AI tool bên thứ ba bị compromise trước, sau đó attacker leo thang vào tài khoản Google Workspace của một nhân viên Vercel và từ đó truy cập hệ thống nội bộ. 580 hồ sơ nhân viên bị lộ, các environment variables không đánh dấu Sensitive coi như leaked. Next.js, Turbopack, và repo open-source không bị ảnh hưởng. Nếu bạn deploy trên Vercel, ba việc cần làm ngay: (1) rotate mọi secret, (2) check Google Workspace OAuth grants, (3) migrate env vars sang Sensitive Variables.

Chuyện gì đã xảy ra

Theo bulletin chính thức của Vercel, attacker đi qua chuỗi: AI tool bên thứ ba (được báo chí gọi tên là Context.ai nhưng Vercel chưa xác nhận) → OAuth app được cấp deployment-level scope trên Google Workspace → tài khoản nhân viên Vercel → hệ thống nội bộ. Dữ liệu bị chạm tới bao gồm env vars không được mark là Sensitive (tức là lưu plaintext-at-rest), và một file chứa 580 dòng thông tin nhân viên.

Một nhóm tự nhận là ShinyHunters đăng bài đòi ransom 2 triệu USD (đặt cọc 500k BTC). BleepingComputer xác nhận thành viên ShinyHunters thật phủ nhận, có thể là kẻ impersonate. Vercel đã thuê chuyên gia IR và báo cáo cơ quan thực thi pháp luật.

Vì sao bạn phải quan tâm (kể cả không dùng Vercel trực tiếp)

OAuth app độc hại này không chỉ hit Vercel. Theo phân tích ban đầu, nó có thể đã được cài vào hàng trăm tổ chức khác. Nghĩa là: nếu team bạn từng cho phép một AI tool truy cập Google Workspace, bạn đang nằm trong blast radius tiềm năng — không phụ thuộc bạn có dùng Vercel hay không.

Thêm nữa: các env var có thể chứa NPM publish tokenGitHub PAT của bạn. Nếu leak, attacker có thể publish package độc hại lên npm hoặc push commit giả vào repo bạn — trở thành supply-chain attack downstream. Đây mới là đòn thực sự đáng sợ.

Technical facts cần biết

Hạng mụcChi tiết
Ngày công bố19/04/2026 (KB update: 20/04/2026)
OAuth client ID độc hại110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com
Dữ liệu nhân viên bị lộ580 records (name, email Vercel, status, timestamps)
Env vars ảnh hưởngChỉ các biến KHÔNG mark Sensitive (plaintext-at-rest)
Env vars an toànBiến đã mark Sensitive — Vercel khẳng định không có bằng chứng bị truy cập
Sản phẩm lõi bị ảnh hưởng?Không — Next.js, Turbopack, OSS repo an toàn
Ransom claimUSD 2,000,000 (chưa verify, chưa trả)

Step-by-step response guide

Bước 1 — Rotate mọi secret (làm trong 30 phút)

Vào Vercel dashboard → Environment Variables. Rotate từng biến:

  • API keys (Stripe, OpenAI, Anthropic, provider AI khác)
  • Database credentials (DATABASE_URL, REDIS_URL…)
  • JWT/session signing secrets
  • NPM tokens (npm token revoke + tạo mới)
  • GitHub Personal Access Tokens (github.com/settings/tokens)
  • Webhook signing secrets (Stripe, Slack, Clerk…)

Ưu tiên NPM + GitHub token vì đây là cửa ngõ supply-chain attack.

Bước 2 — Kiểm tra Google Workspace có bị hit không

Vào admin.google.comSecurityAccess and Data ControlAPI ControlsManage app accessAccessed Apps.

Filter theo client ID: 110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com. Nếu app xuất hiện trong list, bạn đang trong blast radius. Revoke access ngay, sau đó reset mật khẩu + buộc re-auth tất cả user từng cấp consent.

Bước 3 — Investigate hoạt động đáng ngờ

  • Review Activity Log trên Vercel: có deployment lạ không, có ai add env var mới không.
  • Chạy vercel activity trên CLI để xuất log programmatically, diff với baseline.
  • Set Deployment Protection về mức Standard tối thiểu, rotate Deployment Protection token.
  • Kiểm tra npm audit: có package nào của bạn có version bất thường không.

Vá dài hạn — đừng chỉ rotate rồi quên

Rotate xong chỉ reset hiện trạng. Muốn không lặp lại, kiến trúc phải đổi:

  1. Migrate ALL env vars sang Sensitive Variables. Biến Sensitive được encrypt-at-rest, không hiển thị UI sau khi lưu, không xuất ra API. Breach này chứng minh tại sao đây nên là default.
  2. Dynamic secrets — DB credentials ngắn hạn. Dùng AWS IAM DB auth, Google Cloud SQL IAM, HashiCorp Vault dynamic roles, hoặc Neon scoped keys. Credential rò rỉ sẽ tự hết hạn sau vài phút thay vì vĩnh viễn.
  3. Pull secrets runtime, không store trên Vercel. Tích hợp Doppler / Infisical / AWS Secrets Manager / GCP Secret Manager qua SDK. Vercel chỉ giữ 1 master key để fetch, các secret thật không bao giờ chạm platform.
  4. Enable audit logs (Team/Enterprise). Sự cố lần này một phần nghiêm trọng vì rất nhiều team không biết ai đã add/edit env var lúc nào.
  5. OAuth app governance. Review định kỳ Google Workspace Accessed Apps. Thu hẹp scope. Block app mới bằng default, whitelist thủ công.

Limitations & điểm chưa rõ

Vercel chưa chính thức đặt tên công cụ AI bên thứ ba (dù báo chí nhắc Context.ai). Chưa công bố số customer bị ảnh hưởng, chỉ nói “a limited subset”. Ransom 2 triệu USD chưa được verify. Investigation vẫn đang mở — nếu bạn là customer enterprise, khả năng cao sẽ nhận thông báo trực tiếp trong vài ngày tới.

What's next

Ngắn hạn: kỳ vọng Vercel công bố post-mortem chi tiết, làm rõ tên công cụ AI và số customer. Dài hạn: đây là tín hiệu ngành — OAuth governance cho AI tool là điểm yếu phổ biến. Các vụ tương tự (Snowflake 2024, Okta support 2023) đều bắt đầu từ integration bên thứ ba với scope quá rộng. Kỳ tới, kỳ vọng các platform lớn sẽ siết OAuth app scope và bật “encrypt env var” thành default thay vì opt-in.

Với team bạn: làm 3 bước trên hôm nay, đừng đợi email notification. Breach này về cơ bản không có downside nào khi over-react.

Nguồn: Vercel KB, BleepingComputer, Techweez, @k1rallik thread.