Nguyễn Tiến Đạt
Intern Writer
Các nhà nghiên cứu từ Palo Alto Networks Unit 42 vừa phát hiện một lỗ hổng nghiêm trọng trong SDK Python của Google Vertex AI, cho phép kẻ tấn công chiếm quyền kiểm soát quá trình tải lên mô hình học máy (ML), thay thế mô hình hợp pháp bằng mã độc và thực thi mã trên hạ tầng Google Cloud.
Lỗ hổng, được đặt tên là "Pickle in the Middle", xuất phát từ cách Vertex AI SDK tự động tạo bucket lưu trữ tạm thời khi người dùng không chỉ định tham số staging_bucket. Tên bucket được tạo theo mẫu có thể dự đoán từ Project ID và khu vực triển khai. Do SDK chỉ kiểm tra bucket có tồn tại hay không mà không xác minh quyền sở hữu, kẻ tấn công có thể tạo trước bucket này trong tài khoản của mình và chờ nạn nhân tải mô hình lên.
Sau khi nhận được tệp mô hình, kẻ tấn công có thể nhanh chóng thay thế bằng một mô hình độc hại. Theo Unit 42, khoảng thời gian từ lúc tải lên đến khi Vertex AI đọc mô hình là khoảng 2,5 giây, đủ để một Cloud Function tự động ghi đè tệp trong vòng 1,4 giây.
Mối đe dọa đặc biệt nghiêm trọng vì nhiều mô hình Python được lưu bằng pickle hoặc joblib, cho phép thực thi mã trong quá trình giải tuần tự hóa. Trong thử nghiệm, mã độc đã đánh cắp token OAuth từ môi trường phục vụ mô hình và có thể truy cập các tài nguyên khác như mô hình TensorFlow, siêu dữ liệu BigQuery, nhật ký hệ thống và thông tin hạ tầng nội bộ.
Lỗ hổng ảnh hưởng đến các dự án chưa có bucket staging mặc định tại khu vực triển khai và không cấu hình thủ công staging_bucket. Unit 42 xác nhận các phiên bản 1.139.0 và 1.140.0 của SDK đều bị ảnh hưởng.
Google đã phát hành bản vá trong phiên bản 1.148.0, bổ sung cơ chế xác minh quyền sở hữu bucket nhằm ngăn chặn các cuộc tấn công bucket squatting. Người dùng được khuyến nghị nâng cấp lên phiên bản mới nhất và luôn chỉ định rõ bucket lưu trữ do mình kiểm soát khi tải mô hình lên Vertex AI.
Đây là lỗ hổng bucket squatting thứ hai được phát hiện trong hệ sinh thái Vertex AI trong năm 2026, sau CVE-2026-2473 được Google vá hồi tháng 2.
Lỗ hổng, được đặt tên là "Pickle in the Middle", xuất phát từ cách Vertex AI SDK tự động tạo bucket lưu trữ tạm thời khi người dùng không chỉ định tham số staging_bucket. Tên bucket được tạo theo mẫu có thể dự đoán từ Project ID và khu vực triển khai. Do SDK chỉ kiểm tra bucket có tồn tại hay không mà không xác minh quyền sở hữu, kẻ tấn công có thể tạo trước bucket này trong tài khoản của mình và chờ nạn nhân tải mô hình lên.
Sau khi nhận được tệp mô hình, kẻ tấn công có thể nhanh chóng thay thế bằng một mô hình độc hại. Theo Unit 42, khoảng thời gian từ lúc tải lên đến khi Vertex AI đọc mô hình là khoảng 2,5 giây, đủ để một Cloud Function tự động ghi đè tệp trong vòng 1,4 giây.
Mối đe dọa đặc biệt nghiêm trọng vì nhiều mô hình Python được lưu bằng pickle hoặc joblib, cho phép thực thi mã trong quá trình giải tuần tự hóa. Trong thử nghiệm, mã độc đã đánh cắp token OAuth từ môi trường phục vụ mô hình và có thể truy cập các tài nguyên khác như mô hình TensorFlow, siêu dữ liệu BigQuery, nhật ký hệ thống và thông tin hạ tầng nội bộ.
Lỗ hổng ảnh hưởng đến các dự án chưa có bucket staging mặc định tại khu vực triển khai và không cấu hình thủ công staging_bucket. Unit 42 xác nhận các phiên bản 1.139.0 và 1.140.0 của SDK đều bị ảnh hưởng.
Google đã phát hành bản vá trong phiên bản 1.148.0, bổ sung cơ chế xác minh quyền sở hữu bucket nhằm ngăn chặn các cuộc tấn công bucket squatting. Người dùng được khuyến nghị nâng cấp lên phiên bản mới nhất và luôn chỉ định rõ bucket lưu trữ do mình kiểm soát khi tải mô hình lên Vertex AI.
Đây là lỗ hổng bucket squatting thứ hai được phát hiện trong hệ sinh thái Vertex AI trong năm 2026, sau CVE-2026-2473 được Google vá hồi tháng 2.
Được phối hợp thực hiện bởi các chuyên gia của Bkav,
cộng đồng An ninh mạng Việt Nam WhiteHat
và cộng đồng Khoa học công nghệ VnReview