TL;DR

Ngày 19/04/2026, Vercel công bố security bulletin xác nhận một kẻ tấn công đã truy cập trái phép vào một số hệ thống nội bộ qua một OAuth app Google Workspace bị compromise của một tool AI bên thứ ba. Một threat actor tự xưng "ShinyHunters" rao bán access keys, source code, database records, NPM/GitHub tokens và đòi 2 triệu USD tiền chuộc. Dịch vụ hosting vẫn chạy bình thường, nhưng mọi khách hàng được khuyến nghị rotate ngay tất cả env vars không được đánh dấu "sensitive".

Chuyện gì vừa xảy ra

Vercel phát hành bulletin "Vercel April 2026 security incident" lúc 19/04/2026. Công ty cho biết đã xác định được một "limited subset" khách hàng bị ảnh hưởng và đang liên hệ trực tiếp. Điều tra ban đầu chỉ ra nguyên nhân gốc: một OAuth app Google Workspace của một tool AI bên thứ ba bị compromise ở quy mô rộng, potentially ảnh hưởng hàng trăm users của tool này ở nhiều tổ chức. Vercel đã chia sẻ công khai IOC (Indicator of Compromise) là OAuth App ID 110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com để các Google Workspace admin khác tự audit.

Kẻ tấn công công khai trên một forum hacking một mẫu bằng chứng gồm 580 bản ghi nhân viên Vercel (tên, email công ty, trạng thái tài khoản, timestamp hoạt động) cộng với ảnh chụp màn hình một dashboard enterprise nội bộ. Người này tuyên bố đang nắm access keys, source code, database records và credentials deploy nội bộ — đặc biệt là NPM tokens và GitHub tokens — đồng thời đòi 2 triệu USD. Các thành viên kỳ cựu của nhóm ShinyHunters đã phủ nhận liên quan đến vụ này với BleepingComputer.

Vì sao quan trọng với dev

Nếu bạn đang deploy SaaS, Next.js app, Web3 frontend hoặc bất cứ thứ gì lên Vercel, bảng Environment Variables của bạn gần như chắc chắn có Stripe keys, DB URLs, JWT signing keys, OAuth secrets. Vercel có một feature ít người bật gọi là "sensitive environment variables" — encrypt giá trị và khiến nó không đọc được ngay cả với project owner. Theo xác nhận của Vercel và trùng với phân tích của Theo (t3.gg), các biến được đánh dấu sensitive không bị truy cập trong vụ này. Ngược lại, env vars thường — đúng loại mặc định khi bạn add qua UI — phải được coi là đã lộ và rotate ngay.

Rủi ro không dừng ở Vercel. Một Stripe secret key bị lộ có thể bị refund/payout abuse. Một database URL có thể bị scrape toàn bộ dữ liệu user. Một GitHub token từ Git Integration có thể cho attacker push code độc vào repo của bạn — supply chain attack hoàn hảo.

Số liệu & sự kiện

Chi tiếtGiá trị
Ngày công bố19/04/2026
Attack vectorGoogle Workspace OAuth app của tool AI bên thứ ba
Khách hàng bị ảnh hưởng"Limited subset" — chưa công bố con số
Bản ghi nhân viên leak580 records (tên, email, status, timestamps)
Data kẻ tấn công tuyên bố cóAccess keys, source code, DB records, NPM & GitHub tokens
Tiền chuộc đòi2.000.000 USD
Threat actorTự xưng "ShinyHunters" (các thành viên gốc phủ nhận)
Sensitive env varsKHÔNG bị truy cập
Hệ thống nội bộ bị chạm (per industry sources)Linear, GitHub

Sensitive vs Standard env vars

Thuộc tínhStandard env varSensitive env var
Đọc qua UI / APIKhông (kể cả project owner)
Có trong backup & hệ thống nội bộEncrypted, tách riêng
Chỉnh sửa in-placeKhông — phải xoá + tạo lại
Dùng được trong Development envChỉ Production & Preview
Tình trạng trong vụ nàyCoi như đã lộ → rotateKhông có bằng chứng bị truy cập

4 việc bạn phải làm ngay

  1. Rotate tất cả env vars non-sensitive trong Vercel dashboard — đặc biệt API keys (Stripe, OpenAI, Resend), database URLs (Postgres, Mongo, Redis), auth secrets (NextAuth, JWT, webhook HMAC).
  2. Regenerate GitHub tokens gắn qua Vercel Git Integration. Vào GitHub → Settings → Applications, revoke app rồi reconnect. Tương tự với NPM tokens nếu có.
  3. Kiểm tra build logs cho secrets cache trong các deployment cũ. Nếu từng console.log(process.env) hoặc in env vars khi debug, log đó vẫn còn và secret đã cũ vẫn có thể bị khai thác.
  4. Revoke & tạo lại API keys ở mọi dịch vụ downstream: Stripe, AWS, Supabase, Clerk, OpenAI, Anthropic. Kiểm tra dashboard các dịch vụ này xem có traffic bất thường từ IP lạ.

Sau đó, bật sensitive environment variable cho mọi secret production mới:

vercel env add MY_SECRET production --sensitive

Nếu là Google Workspace admin, audit ngay OAuth app với ID 110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com và revoke nếu thấy.

Giới hạn & chi phí

Dịch vụ Vercel không gián đoạn, không charge thêm khi rotate. Tính năng sensitive env var miễn phí ở mọi plan (Hobby, Pro, Enterprise). Những gì Vercel chưa tiết lộ: con số chính xác khách hàng bị ảnh hưởng, có thương lượng với kẻ tấn công hay không, có customer source code nào bị lấy không. Kẻ tấn công tuyên bố có source code và DB records — BleepingComputer chưa verify độc lập dữ liệu leak.

Bước tiếp theo

Vercel đang tiếp tục điều tra và sẽ cập nhật bulletin. Khả năng cao sẽ có đợt push để biến sensitive env var thành mặc định cho secrets mới, cộng thêm audit tooling tích hợp. Trong tuần tới, theo dõi: (1) bulletin update về scope cuối cùng, (2) thông báo trực tiếp từ Vercel nếu account của bạn bị ảnh hưởng, (3) bất kỳ indicator nào của supply-chain attack qua package npm mà team bạn maintain.

Nguồn: Vercel Security Bulletin, BleepingComputer, ByteIota.