Bot review tự host bịa CVE: rủi ro từ đầu ra AI trong CI/CD
Docker kể về BuaJi, bot review chạy local qua Ollama đã bịa một CVE, công ty thứ ba và tài nguyên Kubernetes để phản đối bản vá PostgreSQL. Bài học: giới hạn quyền agent là cần thiết, nhưng mọi cảnh báo AI vẫn phải được kiểm chứng.
Một bản nâng PostgreSQL từ 16.11 lên 16.13 nhận về cảnh báo bảo mật dài khoảng 1.500 từ từ bot review AI. Bot phản đối thay đổi, viện dẫn một CVE, một công ty thứ ba và các tài nguyên Kubernetes bị ảnh hưởng.
Vấn đề là: CVE, công ty và các tài nguyên Kubernetes đó đều không tồn tại.
Theo câu chuyện Docker chia sẻ, đây là lời nhắc đáng chú ý cho các đội vận hành triển khai AI nội bộ: tự host model có thể giúp giữ mã nguồn trong hạ tầng doanh nghiệp, nhưng không biến đầu ra của model thành bằng chứng đáng tin cậy.
Bot không có quyền vẫn có thể tạo rủi ro
Bot có tên BuaJi, chạy model local thông qua Ollama và được kích hoạt trong CI khi có code được push. Bot chỉ được phép đọc thay đổi và viết nhận xét.
BuaJi không thể:
Chạy terraform apply để thay đổi hạ tầng cloud.
Chạy kubectl apply để thay đổi tài nguyên đang chạy trong Kubernetes.
Push commit để sửa mã nguồn.
Truy cập cluster.
Thay đổi mà bot đánh giá chỉ là:
diff
POSTGRESVERSION=16.11
+ POSTGRESVERSION=16.13
Docker mô tả đây là bản nâng patch để xử lý các lỗ hổng đã được công bố. Tuy nhiên, BuaJi lại diễn giải thay đổi này như một rủi ro: cảnh báo dữ liệu nội bộ bị gửi ra ngoài, nêu các tài nguyên Kubernetes không có thật, đề xuất script cô lập node PostgreSQL và khuyến nghị thu hồi toàn bộ quyền IAM.
Kỹ sư vận hành nhận ra báo cáo là bịa sau khoảng hai phút vì hiểu rõ cluster của mình. Nhưng trong tình huống trực đêm, một báo cáo dài, trình bày gọn và mang giọng điệu khẩn cấp vẫn có thể khiến người đọc hành động vội vàng.
Câu hỏi cần đặt ra không chỉ là agent có thể làm gì, mà còn là: người có quyền có thể bị đầu ra của agent thuyết phục làm gì?
CVE giả không phải là bằng chứng
CVE là định danh có thể đối chiếu với nguồn công khai có thẩm quyền. Đây là một trong những tuyên bố tương đối dễ kiểm tra, nhưng BuaJi vẫn bịa một CVE rồi dùng nó làm nền cho lập luận tiếp theo.
Theo Docker, báo cáo của bot trông thuyết phục vì được trình bày có cấu trúc và dùng giọng văn khẩn cấp. Bot cũng đưa ra YAML có vẻ có thể phân tích được về mặt cú pháp. Tuy vậy, YAML hợp lệ về cú pháp không chứng minh nội dung cảnh báo hay hành động được đề xuất là đúng.
Với CI/CD, nhận xét AI nên được xem là đầu ra chưa được kiểm chứng. Nó có thể là tín hiệu để điều tra, nhưng không nên là căn cứ duy nhất để:
Kết luận có sự cố bảo mật.
Cô lập hệ thống.
Thu hồi quyền truy cập.
Thay đổi hạ tầng.
Chặn phát hành.
Quy trình xác minh ngắn cho cảnh báo từ AI
Khi bot review nêu một phát hiện bảo mật, đội vận hành có thể thực hiện các bước kiểm tra ngắn trước khi phản ứng:
Tra cứu CVE tại nguồn có thẩm quyền để xác nhận định danh đó có tồn tại và liên quan đến thành phần đang dùng.
Đối chiếu với inventory cluster để xác nhận tài nguyên, node hoặc workload mà bot nêu có thực sự tồn tại.
Kiểm tra log quyền truy cập của agent để biết agent có khả năng quan sát tài nguyên mà nó tuyên bố đã kiểm tra hay không.
Yêu cầu người có trách nhiệm phê duyệt trước mọi thao tác có tác động đến production.
Đặc biệt, cảnh báo do AI tạo ra không nên tự động kích hoạt thao tác production. Nếu cần tự động hóa, hành động có tác động cao vẫn phải có điểm dừng để con người xem xét và phê duyệt.
Phân quyền vẫn là lớp phòng thủ đầu tiên
Trong sự việc này, giới hạn quyền của BuaJi đã hoạt động đúng. Bot không thể tự chạy script, sửa hạ tầng hay truy cập cluster. Vì vậy, báo cáo sai chỉ khiến kỹ sư mất khoảng hai phút để kiểm tra.
Docker nhấn mạnh rằng sandbox không thể kiểm tra tính đúng sai của một nhận xét AI. Một môi trường cô lập không thể biến CVE bịa đặt thành CVE thật.
Tuy nhiên, cô lập vẫn giới hạn phạm vi thiệt hại trực tiếp. Docker mô tả Sandboxes chạy agent trong các microVM riêng, với kernel và filesystem riêng; mạng bị từ chối theo mặc định. Agent chỉ tiếp cận tài nguyên khi quyền đó được cho phép từ trước.
Theo cách này, quy tắc “agent không được chạm vào cluster hay credential” không chỉ là điều cần ghi nhớ trong cấu hình CI, mà trở thành thuộc tính của môi trường chạy.
Quyền riêng tư dữ liệu không đồng nghĩa độ chính xác
Câu chuyện BuaJi không cho thấy mô hình tự host là vô ích. Việc chạy model local qua Ollama được lựa chọn để mã nguồn không phải gửi tới nhà cung cấp AI bên ngoài.
Nhưng quyền riêng tư dữ liệu và độ chính xác của kết luận là hai vấn đề khác nhau. Với bot review AI nội bộ, cần giữ ranh giới rõ ràng:
Agent chỉ có quyền tối thiểu cần cho nhiệm vụ review.
Phát hiện bảo mật phải được xác minh bằng nguồn độc lập và dữ liệu vận hành thực tế.
Script hoặc lệnh do AI đề xuất không được chạy ngay trên production.
Báo cáo có cấu trúc là điểm khởi đầu cho điều tra, không phải kết luận cuối cùng.
Kết luận
BuaJi không thể tự chạm vào cluster, nhưng nội dung bịa đặt của nó vẫn có thể dẫn một người có quyền đến hành động sai. Với AI trong CI/CD, kiểm soát quyền của agent là cần thiết; kiểm chứng đầu ra trước khi con người hoặc hệ thống tác động đến production cũng quan trọng không kém.