- Vercel đã chính thức xác nhận một sự cố bảo mật do truy cập trái phép vào hệ thống nội bộ, hiện đang phối hợp với các chuyên gia ứng phó sự cố và cơ quan thực thi pháp luật
- Nguyên nhân của vụ xâm nhập là ứng dụng Google Workspace OAuth của công cụ AI bên thứ ba Context.ai bị xâm phạm, dẫn đến tài khoản nhân viên Vercel bị chiếm đoạt
- Kẻ tấn công đã liệt kê các biến môi trường không nhạy cảm (non-sensitive) để giành thêm quyền truy cập; các biến này được lưu ở trạng thái không mã hóa
- Hacker tự xưng là ShinyHunters tuyên bố trên một diễn đàn hack rằng đang bán khóa truy cập, mã nguồn, dữ liệu cơ sở dữ liệu, khóa API và yêu cầu tiền chuộc 2 triệu USD
- Vercel cho biết đã xác nhận tính an toàn của các dự án mã nguồn mở như Next.js, Turbopack, đồng thời khuyến nghị khách hàng rà soát biến môi trường và bật tính năng biến nhạy cảm
Tổng quan sự cố bảo mật
- Vercel là nền tảng hạ tầng cloud hosting và triển khai chuyên cho các framework JavaScript, là công ty phát triển Next.js và cung cấp dịch vụ serverless function, edge computing, pipeline CI/CD
- Trong thông báo bảo mật, công ty đã chính thức xác nhận xảy ra truy cập trái phép (unauthorized access) vào hệ thống nội bộ
- Một số khách hàng giới hạn bị ảnh hưởng, nhưng dịch vụ tự thân không bị tác động
- Công ty đã thuê chuyên gia ứng phó sự cố và thông báo cho cơ quan thực thi pháp luật, hiện đang điều tra
Đường xâm nhập và chi tiết kỹ thuật
- Nguyên nhân gốc của vụ xâm nhập là ứng dụng Google Workspace OAuth của nền tảng AI bên thứ ba Context.ai bị xâm phạm
- CEO của Vercel là Guillermo Rauch đã công bố thêm chi tiết trên X (trước đây là Twitter)
- Kẻ tấn công đã chiếm được tài khoản Google Workspace của một nhân viên Vercel thông qua vụ xâm nhập vào Context.ai
- Sau đó chúng leo thang quyền truy cập (escalate) từ tài khoản đó vào môi trường của Vercel
- Kẻ tấn công đã truy cập các biến môi trường được đánh dấu "không nhạy cảm (non-sensitive)", các biến này được lưu ở trạng thái không mã hóa (not encrypted at rest)
- Vercel cho biết tất cả biến môi trường của khách hàng đều được lưu với mã hóa hoàn toàn khi lưu trữ (fully encrypted at rest) và có cơ chế phòng vệ nhiều lớp, nhưng các biến được gắn nhãn "non-sensitive" đã trở thành điểm yếu
- Vercel khuyến nghị quản trị viên Google Workspace kiểm tra ứng dụng OAuth sau:
110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com
Tuyên bố bán dữ liệu của hacker
- Một tác nhân đe dọa tự xưng là ShinyHunters đã đăng bài trên diễn đàn hack về vụ xâm nhập Vercel và việc bán dữ liệu
- Dữ liệu rao bán: khóa truy cập, mã nguồn, dữ liệu cơ sở dữ liệu, quyền truy cập triển khai nội bộ, khóa API (bao gồm token NPM và token GitHub)
- Chúng đưa dữ liệu Linear làm bằng chứng và tuyên bố đang nắm quyền truy cập vào nhiều tài khoản nhân viên
- Các tác nhân đe dọa trước đây có liên quan tới nhóm ShinyHunters đã phủ nhận với BleepingComputer rằng họ không liên quan đến vụ việc lần này
- Tệp văn bản do kẻ tấn công chia sẻ chứa 580 mục thông tin nhân viên Vercel, gồm tên, địa chỉ email Vercel, trạng thái tài khoản và dấu thời gian hoạt động
- Một ảnh chụp màn hình được cho là của bảng điều khiển Vercel Enterprise nội bộ cũng được chia sẻ kèm theo
- BleepingComputer cho biết họ không thể xác minh độc lập tính xác thực của dữ liệu và ảnh chụp màn hình này
- Trong tin nhắn Telegram, tác nhân đe dọa nói rằng đang liên lạc với Vercel và đã yêu cầu tiền chuộc (ransom) 2 triệu USD
Ứng phó của Vercel và khuyến nghị cho khách hàng
- Vercel xác nhận Next.js, Turbopack và các dự án mã nguồn mở khác vẫn an toàn
- Công ty đã triển khai trên dashboard trang tổng quan về biến môi trường và giao diện cải tiến để quản lý biến môi trường nhạy cảm
- Các biện pháp khuyến nghị cho khách hàng:
- Rà soát biến môi trường (environment variables)
- Bật tính năng biến môi trường nhạy cảm (sensitive environment variable feature) để đảm bảo được mã hóa khi không sử dụng
- Thực hiện xoay vòng secret (secret rotation) nếu cần
3 bình luận
Ý kiến trên Hacker News
Vừa rồi thông báo đã được cập nhật, và điểm quan trọng là họ nói vụ xâm nhập bắt đầu từ việc một ứng dụng Google Workspace OAuth của công cụ AI bên thứ ba bị xâm phạm
Họ cũng đã công bố IOC để hỗ trợ điều tra, và nói rằng nếu là quản trị viên thì nên kiểm tra ngay xem có dùng ứng dụng này hay không
OAuth App là
110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com, và có thể xem nguyên văn trong thông báo bảo mật của VercelĐặc biệt, phần giải thích rằng việc liệt kê các biến môi trường không nhạy cảm đã cho phép mở rộng truy cập thêm là điều khá đáng chú ý, và cũng có suy đoán rằng kẻ tấn công là một nhóm tinh vi được AI tăng tốc đáng kể
Dù vậy, việc vẫn chưa có email thông báo cho người dùng thì khá đáng lo
Tôi hiểu họ không muốn chỉ mặt gọi tên bên kia ngay, nhưng việc giấu tên dịch vụ chỉ khiến phản ứng bị chậm lại
Dạo này thay vì xây trên một nền tảng ổn định, việc ghép nhiều thành phần bên thứ ba với nhau đã trở nên quá đỗi bình thường, và vì thế số điểm có thể thất bại cũng tăng lên
Rốt cuộc lại một lần nữa lộ rõ rằng bảo mật chỉ mạnh bằng mắt xích yếu nhất, và đặc biệt là đặt cả doanh nghiệp lên trên các công cụ AI kiểu vibe-coded thì rõ ràng là có rủi ro
Tôi tự hỏi liệu có nên tiếp tục đẩy theo hướng này không, và phải phức tạp thêm đến mức nào nữa thì người ta mới nhìn lại
Nhìn vào phân tích stack được Claude Code khuyến nghị, tôi có cảm giác Claude Code đang làm web ngày càng đồng nhất hóa hơn khi mặc định khuyến nghị một số nhà cung cấp và framework nhất định
Sự thiếu đa dạng này dường như cuối cùng lại làm bán kính ảnh hưởng lớn hơn mỗi khi có sự cố
Gần như có cảm giác nó đã trở thành lựa chọn mặc định
Nên tôi bảo làm không dùng Node đi, và nó lập tức viết lại thành backend Python, đồng thời tự giải thích rằng nó đã chuyển sang hướng giảm phụ thuộc
Nói thêm là đây chỉ là một thử nghiệm cho ra thứ cuối cùng cũng sẽ bỏ đi, chứ không phải tôi muốn khuyến nghị vibe coding
Cuối cùng vẫn là vấn đề cách sử dụng, và cần hướng dẫn lập trình viên tốt hơn để họ không để Claude ra quyết định thay mình
Có thể nhận tư vấn, nhưng cuối cùng con người vẫn phải tự đánh giá một cách phản biện; ở điểm này tôi thấy cũng không khác mấy so với cộng tác với một thành viên khác trong nhóm
Internet vốn dĩ đã có xu hướng như vậy, nhưng lần này cảm giác lại hơi khác
Là người từng ở trong đội phản ứng sự cố bảo mật, tôi đồng cảm được việc đội ứng phó lần này chắc đang vất vả đến mức nào
Dù vậy, thông báo đầu tiên thật sự trông như một màn giao tiếp tệ hại
Họ không nói chuyện gì đã xảy ra, chỉ dùng kiểu diễn đạt rằng nó nghiêm trọng đến mức phải báo cho cơ quan thực thi pháp luật, còn hướng dẫn hành động cho khách hàng thì chỉ là “hãy rà soát biến môi trường”
Nhưng từ góc nhìn khách hàng thì như vậy quá mơ hồ để biết phải làm gì. Là bảo xem giá trị vẫn còn đó hay không, hay phải xác định xem đã bị lộ chưa bằng cách nào?
Theo tiêu chuẩn của tôi, họ lẽ ra phải nói ngay rằng hãy xoay vòng (rotation) toàn bộ mật khẩu, access token và dữ liệu nhạy cảm đã giao cho Vercel, rồi tiếp đó hướng dẫn kiểm tra audit log truy cập và các dấu hiệu bất thường trong dữ liệu khách hàng
Lý do phải trả phí hosting đắt đỏ rốt cuộc là vì kỳ vọng họ quản lý chuyên nghiệp về bảo mật và độ ổn định, nhưng lúc này thì ngay cả khi tính tới sự bất định ban đầu, cách họ làm vẫn có vẻ mơ hồ một cách quá có chủ ý
Tuy nhiên, nếu các giá trị bí mật như API key, token, thông tin xác thực DB hay signing key không được đánh dấu sensitive, thì nên xem là có khả năng đã lộ và ưu tiên thay thế chúng
Nguồn là incident page, và thời điểm tôi xem là 4:22 PM giờ miền Đông
Tôi là khách hàng trả tiền hơn một năm rồi, mà email công ty lại không báo trước, để một trang tổng hợp tin tức báo trước thì thật khó tin
Có thể xem bối cảnh liên quan ở thread HN và phản ứng khi đó
Còn lại phần lớn đều giống như những lựa chọn tự rước rắc rối vào mình
Nhưng giờ tôi quyết định không còn dựa vào sự tiện đó nữa, và đã chuyển hết từ Render sang linode
Trước đây tôi trả hơn 50 USD mỗi tháng cho Render, giờ chỉ còn tầm 3–5 USD, nên gần như tôi không còn ý định dùng lại các nhà cung cấp hosting kiểu đó nữa
Khi đọc câu “Vercel không tiết lộ hệ thống nào bị xâm nhập”, tôi cảm thấy dù không phải chuyên gia bảo mật thì đây cũng là một thái độ khá khó chấp nhận
Nó cũng tạo cảm giác họ tập trung vào việc tự phòng thủ cho mình hơn là giúp khách hàng hiểu tác động
Ví dụ, nếu nói một hệ thống con X ít ai biết trong GitHub bị xâm nhập, thì có lẽ điều đó cũng chẳng giúp ích thực tế hơn bao nhiêu so với mức thông tin hiện có là “môi trường của một số khách hàng đã bị xâm phạm”
Nhìn lại việc IOC được thêm vào thông báo, rõ ràng chi tiết rằng vụ này bắt đầu từ việc một ứng dụng Google Workspace OAuth bị xâm phạm là thông tin quan trọng với cả cộng đồng
Tôi nghĩ quản trị viên và chủ tài khoản nên kiểm tra ngay định danh ứng dụng đó, và chi tiết nằm trong thông báo của Vercel
Tôi dùng MacBook Pro và Chrome 147.0.7727.56, và ngay khi bấm vào logo Vercel ở góc trên bên trái của trang thì ứng dụng Chrome lập tức bị crash
Nghe như một bug khá thú vị
Tình huống mọi người đang đọc chuyện Vercel có vẻ bị xâm nhập gì đó, rồi lại còn cùng nhau thử tái hiện crash của trang web, nghe hơi buồn cười một cách kỳ lạ
Tất nhiên tôi cũng nghĩ kiểu trò tái hiện tập thể này chắc chắn không thể nào không phản tác dụng
Tôi cũng quay lại video, và vì đang dùng uBlock Origin Lite nên tôi tưởng có thể do nó, nhưng tắt đi thì vẫn không crash
Nếu tái hiện được thì có lẽ cũng hơi vui
Nó kéo dài một thời gian rồi cuối cùng cũng được sửa
Nhưng sau khi mở trang chủ Vercel một lần bằng URL trực tiếp, thì bấm logo nữa không còn crash nữa
Nhưng giờ thì tôi hơi ngại bấm nút Finish update
Tôi đang xem thêm một thread HN khác cùng với vài bài trên X
Trong đề cập đầu tiên của Theo, anh ấy nói chuyện này có vẻ đáng tin, và ở bài tiếp theo thì nói rằng các env var được đánh dấu sensitive là an toàn, còn các giá trị không được đánh dấu thì nên thay thế để phòng ngừa
Ngoài ra, một bài khác nói kiểu hack này có thể xảy ra với bất kỳ host nào, và một đề cập khác nữa thì nêu khả năng có liên hệ với ShinyHunters
Nếu đó là giá trị bắt buộc phải thay, thì ngay từ đầu chẳng phải nó đã là dữ liệu nhạy cảm và lẽ ra phải được đánh dấu sensitive rồi sao?
Ở thời điểm này thì có vẻ chưa có quá nhiều nội dung thực chất
Những sự cố thế này lại khiến tôi nhớ ra hệ sinh thái web hiện đại đang tập trung vào các điểm lỗi đơn lẻ nhiều đến mức nào
Mức độ công khai cho tới lúc này tôi thấy là tương đối minh bạch, nhưng hồ sơ rủi ro của việc phụ thuộc hoàn toàn vào PaaS managed trọn gói thì đúng là cần phải tính lại
Cụm từ “một số khách hàng giới hạn” về mặt kỹ thuật vẫn có thể đúng ngay cả khi là 99%, nên nghe khá mơ hồ
Tôi cũng nghi ngờ liệu có phải thực tế là rất nhiều khách hàng bị ảnh hưởng, nhưng họ chỉ gọi những khách hàng lớn mà họ không muốn mất đi là một subset hay không
Thường nếu thật sự có thể trấn an thì họ sẽ nói con số cụ thể kiểu “dưới 1% người dùng”, còn lần này thì không
Nên tôi đoán hoặc là họ vẫn chưa có đủ khả năng quan sát, hoặc là họ không thích con số hiện có
Dù vậy tôi vẫn đồng cảm với việc đội phản ứng chắc đang rất vất vả, và hy vọng từ giờ họ sẽ giao tiếp cởi mở, minh bạch hơn
Ở đây cũng thấy xuất hiện ký tự tiếng Hindi. Gần đây, bất kể là OpenAI, Claude hay Google, việc đầu ra tiếng Hàn bị trộn lẫn tiếng Hindi xảy ra khá thường xuyên; liệu có phải bộ dữ liệu tiếng Hàn được người Ấn Độ gán nhãn không?
Tôi vốn không thích các mô hình Trung Quốc vì phản hồi tiếng Hàn hay bị lẫn tiếng Trung, nhưng dạo gần đây các frontier model lại cứ trộn tiếng Hindi vào, thành ra cảm giác bài xích với mô hình Trung Quốc còn giảm đi.
Tôi thấy mỗi khi dùng Claude thì tiếng Nhật hay xuất hiện. Hôm qua cũng vậy.