Jesse Davies là một developer xây dựng hơn 120 ứng dụng trên Google AI Studio, người luôn đọc changelog mỗi tuần, theo dõi livestream các tính năng mới, thiết lập API key riêng cho từng dự án, bật xác thực hai yếu tố ở mọi nơi có thể.
Đêm định mệnh tháng 4/2026, anh đi ngủ với cảnh báo ngân sách đặt ở mức 10 AUD, tương đương gần 200.000 đồng. Sáng hôm sau khi mở email, Jesse giật mình với hóa đơn hơn 25.672,86 AUD tiền nợ Google Cloud, tương đương gần 500 triệu đồng. Số tiền này cao hơn 2500 lần so với mức ngân sách anh đặt ra.
Trong khoảng thời gian anh ngủ say, hệ thống của Google đã ghi nhận khoảng 60.000 request trái phép đến các API của anh, đặc biệt là Gemini Pro Image. Điều khiến Jesse hoảng hốt hơn nữa là cuộc điều tra của Google chỉ ra nguồn gốc từ một API key mà anh không thể xác định được.
Anh có 5 key hợp lệ trong dự án, nhưng key này không nằm trong số đó. Câu chuyện chỉ bắt đầu trở nên rõ ràng sau một tuần điều tra kiệt sức, khi Jesse phát hiện ra nguyên nhân thực sự không phải do API key bị đánh cắp như anh nghĩ.
Sự thật là anh đã từng publish một dịch vụ Cloud Run từ AI Studio vài tháng trước đó. Khi nhấn nút "Publish" trong AI Studio, Google tự động deploy ứng dụng với chế độ công khai, tắt xác thực IAM invoker, và lưu API key dưới dạng plaintext trong biến môi trường container. Ai đó đã tìm được URL công khai này, dù nó không được chia sẻ hay index ở đâu cả, rồi gửi tới hàng chục nghìn request.
Phần nghiệt ngã nhất là Google Cloud tự động ký mỗi request thay mặt kẻ tấn công bằng chính API key của Jesse được lưu trong container. Về mặt kỹ thuật, đây không phải là một vụ hack truyền thống, mà là hệ quả của thiết lập mặc định quá lỏng lẻo.
Diễn biến trong đêm đó còn kinh hoàng hơn khi nhìn vào chi tiết giao dịch. Lúc 10 giờ tối, Google tính phí 100 AUD (Dollar Úc) và thẻ tín dụng của Jesse chấp nhận. Sau đó lần lượt là 200 AUD lúc 10:35 tối, 500 AUD lúc 10:51 tối, 1.000 AUD lúc 11:02 tối. Ngân hàng ANZ bắt đầu từ chối các giao dịch 2.000 USD, 4.000 AUD và 6.000 AUD, nhưng lại chấp nhận khoản 8.000 AUD lúc 2:32 sáng, xóa sạch số dư còn lại trong tài khoản.
Khi khoản 10.000 AUD tiếp theo bị từ chối vì không đủ tiền, Jesse mới nhận được email thông báo từ Google lúc 9:30 sáng: "Đã đạt 150% ngân sách 10 AUD của bạn." Lúc này dashboard hiển thị 3.010 AUD và con số vẫn đang tăng.
Khi Jesse liên hệ với bộ phận hỗ trợ, tình huống trở nên phi lý hơn nữa. AI bot hỗ trợ chỉ nhìn thấy số dư 13 cent trong hệ thống, hoàn toàn không hiểu anh đang báo cáo vấn đề gì. Khi cuối cùng được chuyển đến nhân viên thực, người này khuyên anh tắt billing, và Jesse đã làm theo.
Động thái này xóa sạch toàn bộ log về những gì đã xảy ra. Họ sau đó yêu cầu Jesse chứng minh tài khoản bị hack. Trong lúc nói chuyện với nhân viên hỗ trợ, Jesse kéo dữ liệu rate limit và phát hiện request vẫn đang đổ về với tốc độ hàng nghìn lượt mỗi phút, ngay lúc đó.
Câu trả lời từ phía Google khiến anh choáng váng: "Đó là điều xảy ra khi bạn sử dụng dịch vụ của chúng tôi. Mức sử dụng của bạn tăng lên." Chỉ sau khi Jesse hỏi tại sao anh lại tự spam API của chính mình rồi gọi hỗ trợ cho vui, họ mới chịu chuyển lên cấp cao hơn. Năm phút sau đó, tài khoản của anh bị đình chỉ, xóa sạch bằng chứng và dữ liệu log còn sót lại.
Có một chi tiết kỹ thuật quan trọng mà Jesse chỉ phát hiện sau này: tài khoản của anh đã tự động được nâng lên tier cao hơn mà không có thông báo gì. Theo tài liệu công khai của Google, cần chi 1.000 AUD để chuyển tier.
Nhưng giải thích của họ lại là "tình trạng khách hàng lâu năm", một cụm từ không hề xuất hiện trong chính sách chính thức. Khi tier tăng lên Tier 3, giới hạn chi tiêu tự động nhảy lên 20.000-100.000 AUD và rate limit được mở tối đa. Đây chính là lý do tại sao kẻ tấn công có thể gửi 1.000 request mỗi phút mà không bị chặn.
Sau một tuần với 32 nhân viên Google xem hồ sơ, 3 agent khác nhau, 6-7 nhà quản lý cấp cao và vô số email bị phớt lờ, Jesse cuối cùng nhận được xác nhận rằng khoản nợ 25.672,86 AUD đã được miễn trừ hoàn toàn. Số tiền 9.800 AUD mà Google đã chia thành 5 lần thanh toán cũng được hoàn lại.
Nhưng anh vẫn phải hủy thẻ tín dụng, nhiều hóa đơn tự động bị trả về gây ảnh hưởng trực tiếp. Và quan trọng hơn, Jesse vẫn không có câu trả lời cho những câu hỏi cốt lõi: API key bí ẩn kia đến từ đâu, nó có thực sự bị vô hiệu hóa chưa, traffic đến từ IP nào, và mã lỗi A85517270361182653 xuất hiện trong subject của mọi email nghĩa là gì.
Điều đáng sợ nhất trong câu chuyện này không phải con số tiền, mà là việc tất cả những lỗ hổng này đều là thiết lập mặc định của Google Cloud. API key không có giới hạn IP hay referrer, không có giới hạn chi tiêu hàng tháng, Cloud Run deploy ứng dụng từ AI Studio với chế độ công khai theo mặc định, không có hệ thống phát hiện bất thường tự động, billing tier tự động tăng khi chi tiêu vượt ngưỡng.
Jesse đã làm đúng mọi thứ theo trình tự, nhưng những thiết lập mặc định này vẫn biến một đêm ngủ bình thường thành cơn ác mộng tài chính. Và theo như anh chia sẻ, câu chuyện tương tự đang xảy ra với nhiều developer khác mỗi ngày.
Nguyễn Hải
