Developer bàng hoàng: Cài cảnh báo chi 200.000 đồng, thức dậy nợ Google Cloud gần 500 triệu
Cài cảnh báo 200.000 đồng, thức dậy nợ Google Cloud gần 500 triệu

Jesse Davies, một nhà phát triển đã xây dựng hơn 120 ứng dụng trên Google AI Studio, luôn cẩn trọng với bảo mật: đọc changelog hàng tuần, theo dõi livestream tính năng mới, thiết lập API key riêng cho từng dự án và bật xác thực hai yếu tố ở mọi nơi có thể. Tuy nhiên, một đêm định mệnh tháng 4/2026 đã biến mọi nỗ lực của anh thành vô ích.

Cơn ác mộng tài chính chỉ sau một đêm

Trước khi đi ngủ, Jesse cài đặt cảnh báo ngân sách ở mức 10 AUD (tương đương gần 200.000 đồng). Sáng hôm sau, khi mở email, anh bàng hoàng thấy hóa đơn 25.672,86 AUD (gần 500 triệu đồng) từ Google Cloud, cao gấp 2.500 lần so với ngân sách đã đặt.

Trong lúc anh ngủ, hệ thống 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 đáng ngạc nhiên hơn, cuộc điều tra của Google chỉ ra nguồn gốc từ một API key mà Jesse không thể xác định. Anh có 5 key hợp lệ trong dự án, nhưng key này không nằm trong số đó.

Banner rộng Pickt — ứng dụng danh sách mua sắm cộng tác cho Telegram

Nguyên nhân thực sự: Lỗ hổng thiết lập mặc định

Sau một tuần điều tra kiệt sức, Jesse phát hiện sự thật: không phải API key bị đánh cắp. Vài tháng trước, anh từng publish một dịch vụ Cloud Run từ AI Studio. Khi nhấn nút "Publish", 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 thấy URL công khai này, dù nó không được chia sẻ hay index, rồi gửi hàng chục nghìn request.

Nghiệt ngã hơn, 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ề kỹ thuật, đây không phải hack truyền thống, mà là hậu quả của thiết lập mặc định quá lỏng lẻo.

Diễn biến kinh hoàng trong đêm

Chi tiết giao dịch cho thấy một kịch bản tài chính đáng sợ: lúc 10 giờ tối, Google tính phí 100 AUD và thẻ tín dụng của Jesse chấp nhận. Sau đó lần lượt 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.

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 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 tăng.

Hỗ trợ khách hàng phi lý

Khi Jesse liên hệ bộ phận hỗ trợ, AI bot chỉ thấy số dư 13 cent trong hệ thống, không hiểu vấn đề. Khi được chuyển đến nhân viên thực, người này khuyên anh tắt billing. Động thái này xóa sạch toàn bộ log. Họ sau đó yêu cầu Jesse chứng minh tài khoản bị hack. Trong lúc nói chuyện, Jesse kéo dữ liệu rate limit và phát hiện request vẫn đổ về hàng nghìn lượt mỗi phút.

Câu trả lời từ Google: "Đó là điều xảy ra khi bạn sử dụng dịch vụ của chúng tôi." Chỉ sau khi Jesse hỏi tại sao anh lại tự spam API của mình, họ mới chịu chuyển lên cấp cao hơn. Năm phút sau, tài khoản bị đình chỉ, xóa sạch bằng chứng và log còn sót lại.

Bí ẩn tier tự động nâng cấp

Jesse phát hiện 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. 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à "tình trạng khách hàng lâu năm" – một cụm từ không có trong chính sách. Khi tier lên Tier 3, giới hạn chi tiêu nhảy lên 20.000-100.000 AUD và rate limit mở tối đa, cho phép kẻ tấn công gửi 1.000 request mỗi phút mà không bị chặn.

Banner sau bài viết Pickt — ứng dụng danh sách mua sắm cộng tác với hình minh họa gia đình

Kết quả cuối cùng và những câu hỏi chưa được trả lời

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 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.

Tuy nhiên, 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. 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 đế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 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à tất cả những lỗ hổng đều là thiết lập mặc định của Google Cloud: API key không giới hạn IP hay referrer, không 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 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ứ, 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 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.