TL;DR

Vercel vừa công bố — không có npm package nào do Vercel phát hành bị tampering. Xác nhận này đến từ cuộc audit chung với GitHub, Microsoft, npm và Socket Security, trực tiếp phản bác tin đồn ShinyHunters đang rao bán npm token trên BreachForums. Next.js (~6 triệu lượt tải/tuần), Turbopack và toàn bộ open-source projects vẫn an toàn. Nhưng các env variable không được đánh dấu sensitive của một lượng nhỏ khách hàng đã bị lộ — rotate ngay.

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

Ngày 19/4/2026, Vercel công bố sự cố bảo mật: attacker đã xâm nhập hệ thống nội bộ thông qua một chuỗi tin cậy OAuth phức tạp. Sau đó xuất hiện tin đồn trên BreachForums — nhóm ShinyHunters tuyên bố đang giữ source code, npm token và GitHub token của Vercel, ra giá 2 triệu USD (có thể deal từ 500K USD BTC).

Phản ứng của Vercel không phải là im lặng hay phủ nhận mơ hồ. Họ bắt tay với bốn tổ chức có thẩm quyền tuyệt đối trong vấn đề này — GitHub (chủ registry), Microsoft (chủ GitHub), npm (registry trực tiếp) và Socket Security (chuyên giám sát supply chain) — để audit toàn bộ lịch sử publish. Kết quả: không dấu hiệu tampering nào. Đây là kịch bản tốt nhất có thể có sau một vụ breach ở quy mô này.

Vì sao chuyện này quan trọng

Next.js một mình đã có khoảng 6 triệu lượt tải/tuần trên npm. Nếu attacker thực sự sở hữu live npm token của Vercel và kịp push một phiên bản next@14.x.x độc hại trước khi tokens bị revoke, bạn có một sự kiện kiểu XZ Utils 2024 quy mô toàn cầu: mọi npm install, mọi CI/CD pipeline, mọi git push trigger build đều kéo về payload. Đó là lý do giới bảo mật nín thở mấy ngày qua.

Xác nhận của Vercel chặn đứng kịch bản đó. Với phần lớn developer trên thế giới dùng Next.js/Turbopack, đây là tin tốt — không cần downgrade, không cần rollback. Nhưng với khách hàng trực tiếp của Vercel, câu chuyện chưa kết thúc.

Technical facts

DetailInfo
Disclosed19/4/2026 (bulletin + Rauch X thread)
Attack vectorOAuth token compromise của Context.ai (third-party AI tool)
OAuth client ID110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com
Dwell time~22 tháng (June 2024 → April 2026)
Data exposedEnv vars không đánh dấu sensitive + Deployment Protection tokens
Data KHÔNG exposedEnv vars marked sensitive (mã hoá, locked cả với Vercel staff)
npm supply chain auditGitHub + Microsoft + npm + Socket — CLEAN
ServicesVẫn hoạt động bình thường xuyên suốt

Chuỗi tấn công đi như sau: Context.ai bị breach AWS vào ~3/2026, OAuth token cho Google Workspace bị đánh cắp → attacker replay token, impersonate app Context.ai để truy cập Google Workspace của một nhân viên Vercel (không trigger password hay MFA) → pivot lateral vào hệ thống nội bộ Vercel → enumerate env vars của khách hàng được đánh dấu non-sensitive. Toàn bộ quá trình kéo dài khoảng 22 tháng mới bị phát hiện.

So sánh với s1ngularity Nx attack (8/2025)

Yếu tốVercel 4/2026s1ngularity Nx 8/2025
VectorOAuth/identity chainĐánh cắp trực tiếp npm token
TargetHệ thống nội bộ, env varsPackage published (Nx + libs)
Kết quảKhông có package bị tamperMalicious version publish kèm postinstall LLM script
Dwell time~22 tháng~4 giờ (18:32 → 22:44 EDT)
Nạn nhânSubset khách hàng VercelMọi dev chạy npm install trong cửa sổ đó

Bài học: OAuth-based supply chain attack bypass được password rotation + MFA vì token đã pre-authorized. Trong khi đó, npm token compromise có blast radius tức thời và khổng lồ khi payload chạm CI/CD downstream.

Ai hưởng lợi từ xác nhận này

  • Cộng đồng Next.js / Turbopack toàn cầu — có thể npm install / update bình thường, không cần pin SHA hay downgrade.
  • CI/CD pipeline tự động update — không phải dừng build hàng loạt.
  • Security community — mẫu phản ứng incident tốt: partner-confirmation model (đối tác registry + platform owner + security vendor cùng audit) đáng học.
  • Khách hàng Vercel bị ảnh hưởng trực tiếpkhông được hưởng lợi từ xác nhận này. Các env vars của họ đã lộ và cần rotate.

Limitations & risk còn lại

Xác nhận npm-safe KHÔNG có nghĩa mọi thứ đã xong:

  • Credential fan-out: env vars non-sensitive có thể chứa AWS key, Stripe secret, database URL, OpenAI key… Mỗi biến là một pivot point vào hệ thống downstream.
  • Rotate không đủ — phải redeploy. Vercel env var rotation không tự động invalidate deployment cũ. Deployment cũ vẫn dùng credential cũ cho tới khi bạn rebuild.
  • GitHub token scope: Vercel chưa công bố chi tiết. Nếu attacker có read-access, họ có thể clone private repo.
  • ShinyHunters claims: tin đồn về ~580 employee records, source code, internal Linear access vẫn chưa verify. Chính ShinyHunters members đã phủ nhận với BleepingComputer.
  • 9-day gap: một khách hàng Vercel nhận OpenAI leaked-key notification vào 10/4/2026 — chín ngày trước khi Vercel public disclosure. Khoảng trống này chưa được giải thích.

Nên làm gì ngay

Nếu bạn là khách hàng Vercel:

  1. Pin next, turbo, @vercel/*, @next/* về phiên bản known-safe trong lockfile (phòng xa tuần này)
  2. Rotate MỌI secret từng lưu dưới dạng non-sensitive env var — API keys, DB credentials, webhook secrets, OAuth client secrets
  3. Redeploy mọi environment sau khi rotate — rotation mà không redeploy là rotate giả
  4. Chuyển mọi secret sang tier sensitive. Vercel vừa ship update: env var creation giờ default sensitive: on
  5. Rotate Deployment Protection tokens, bật Deployment Protection lên ít nhất Standard
  6. Revoke Vercel GitHub OAuth integration trong GitHub Settings rồi re-authorize
  7. Audit Google Workspace / Entra ID OAuth app grants — xoá mọi app không dùng
  8. Check CloudTrail, Stripe dashboard, OpenAI logs… cho hoạt động bất thường từ June 2024 tới nay

Vercel cũng đã ship một loạt cải tiến: default sensitive-on, team-wide env var management tốt hơn, activity log mật độ cao hơn, email team invite rõ hơn. Đây là phản ứng đúng hướng — chuyển từ opt-in per-variable sang secure-by-default.

Nguồn: Vercel Security Bulletin, Trend Micro phân tích, Vercel changelog — s1ngularity, Vercel trên X.