Vercel lưu bí mật của bạn ở dạng văn bản thuần và gọi đó là một tính năng
Kẻ tấn công đã bẻ ngang từ một công cụ AI bị xâm phạm qua một tài khoản Google vào hạ tầng của Vercel, rồi giải mã mọi biến môi trường không được đánh dấu thủ công là 'nhạy cảm'. Sự cố kéo dài hai tháng trước khi có ai đó phát hiện.
Vercel bị xâm phạm. Kẻ tấn công ở bên trong khoảng hai tháng trước khi bị phát hiện. Họ đã liệt kê và giải mã các biến môi trường của khách hàng — khóa API, mật khẩu cơ sở dữ liệu, khóa ký, token — cho mọi dự án không dùng cờ "sensitive" tùy chọn của Vercel.
Chuỗi tấn công: một công cụ AI bên thứ ba tên Context.ai bị xâm phạm. Kẻ tấn công dùng chỗ đứng đó để chiếm quyền một tài khoản Google Workspace của nhân viên Vercel. Từ đó, họ bẻ ngang vào các hệ thống nội bộ của Vercel. Rồi họ bắt đầu đọc bí mật.
Dữ liệu hiện được cho là đang được rao bán trên BreachForums với giá 2 triệu USD.
Hộp kiểm "sensitive" không phải mặc định
Đây là phần quan trọng.
Vercel có hai loại biến môi trường. Loại thường, vốn được "mã hóa khi lưu trữ" nhưng có thể được giải mã và đọc bởi các hệ thống của Vercel. Và loại "sensitive", dùng thêm một lớp mã hóa mà Vercel nói là ngăn cả truy cập nội bộ.
Kẻ tấn công có thể đọc toàn bộ loại thường. Chỉ có loại "sensitive" là được bảo vệ.
Vấn đề: "sensitive" là tùy chọn chọn tham gia. Không phải mặc định. Mọi nhà phát triển đã thiết lập DATABASE_URL hay STRIPE_SECRET_KEY hay JWT_SIGNING_KEY mà không đánh dấu hộp kiểm — và đó là phần lớn trong số họ — đã để các giá trị đó ở dạng mà kẻ tấn công có quyền truy cập nội bộ có thể giải mã.
Hướng dẫn của Vercel sau sự cố: "Enable the sensitive environment variable feature for encrypted storage." Nói cách khác: lớp mã hóa mà bạn tưởng đang bảo vệ bí mật của mình thực ra không bảo vệ chúng khỏi chính họ, hay khỏi bất kỳ ai xâm nhập được vào hệ thống của họ.
Hai tháng hiện diện trong hệ thống
Vụ xâm phạm ban đầu xảy ra vào tháng 2 năm 2026. Vercel công bố bản tin bảo mật đầu tiên vào ngày 19 tháng 4. Tức là khoảng hai tháng kẻ tấn công có quyền truy cập vào hệ thống nội bộ.
Chính đội bảo mật của Vercel mô tả kẻ tấn công là "cực kỳ tinh vi, dựa trên tốc độ vận hành và sự hiểu biết sâu về bề mặt API sản phẩm của Vercel". Khi công ty đang lưu trữ hạ tầng của bạn nói rằng kẻ tấn công hiểu hệ thống của họ hơn mức kỳ vọng, điều đó đáng để bạn dừng lại suy nghĩ.
Trong hai tháng đó, kẻ tấn công có thời gian để liệt kê mọi biến môi trường truy cập được trên các dự án khách hàng bị ảnh hưởng. Có thời gian để đưa dữ liệu ra ngoài. Có thời gian để bán.
Chuỗi cung ứng OAuth
Điểm xâm nhập thậm chí không phải là mã của chính Vercel. Một nhân viên Vercel đã cấp quyền cho Context.ai — một công cụ năng suất AI — qua Google OAuth. Khi Context.ai bị xâm phạm, kẻ tấn công thừa hưởng mọi quyền mà lần cấp quyền OAuth đó mang lại.
Đây là mô hình cứ lặp đi lặp lại. Các tổ chức cẩn thận khóa chặt hệ thống xác thực chính, rồi lại phát token OAuth cho các công cụ bên thứ ba vốn có tư thế bảo mật riêng, thường là yếu hơn. Chỉ cần một ứng dụng trong chuỗi bị xâm phạm, kẻ tấn công sẽ thừa hưởng quyền truy cập của nhân viên bạn.
OAuth App ID bị xâm phạm là công khai: 110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com. Nếu tổ chức của bạn đã cấp quyền cho ứng dụng này, hãy thu hồi ngay.
Bạn nên làm gì
Nếu bạn triển khai trên Vercel:
- Xoay vòng mọi biến môi trường ngay lập tức — đừng chờ xác định xem mình có "bị ảnh hưởng" hay không
- Bật cờ sensitive trên mọi biến môi trường từ nay về sau
- Rà soát quyền ứng dụng OAuth trong Google Workspace của bạn và thu hồi mọi thứ bạn không chủ động dùng
- Kiểm tra nhật ký triển khai của Vercel để tìm thay đổi bất thường trong giai đoạn tháng 2 – tháng 4 năm 2026
- Kiểm tra các dịch vụ hạ nguồn (cơ sở dữ liệu, cổng thanh toán, API) xem có truy cập trái phép nào bằng thông tin xác thực đã lưu trong Vercel hay không
Bài học thực sự
Kiến trúc của Vercel lưu bí mật của khách hàng theo cách mà quyền truy cập nội bộ có thể giải mã. Họ có cung cấp một lựa chọn mạnh hơn, nhưng không đặt làm mặc định. Trong hai tháng, không ai phát hiện kẻ tấn công đang đọc những bí mật đó.
Đây là vấn đề của bảo mật kiểu "hãy tin chúng tôi". Vercel mã hóa các biến môi trường của bạn khi lưu trữ — điều đó đúng về mặt kỹ thuật. Nhưng họ giữ khóa giải mã. Khi hệ thống của họ bị xâm phạm, bí mật của bạn cũng vậy.
Phương án thay thế là kiến trúc zero-knowledge, nơi nhà cung cấp dịch vụ về mặt toán học không thể giải mã dữ liệu của bạn. Không phải "chọn không giải mã" — mà là không thể. Không có mức xâm phạm nội bộ nào, không nhân viên bất hảo nào, không kẻ tấn công tinh vi nào sống trong hạ tầng của bạn suốt hai tháng có thể đọc được những gì mà máy chủ chưa từng có khóa để giải mã.
Vercel đang yêu cầu khách hàng đánh dấu một hộp kiểm để chọn tham gia vào mã hóa thật sự. Câu hỏi đáng đặt ra: tại sao đó không phải là lựa chọn duy nhất ngay từ đầu?