Các Agentic Workflows mới phát hành của GitHub có thể bị lừa để công khai các tệp trong kho lưu trữ riêng tư (private repository), các nhà nghiên cứu tại Noma Labs đã chứng minh, cho thấy chỉ một bình luận trong issue công khai cũng có thể biến một trợ lý AI nội bộ thành một kênh rò rỉ dữ liệu.
Lỗ hổng này quan trọng vì nó vượt qua các kiểm tra an toàn tích hợp sẵn của GitHub mà không cần bất kỳ mã khai thác đặc biệt nào; kẻ tấn công chỉ cần soạn thảo một issue có vẻ vô hại mà tác nhân AI (AI agent) sẽ đọc và thực hiện theo.
Cách thức hoạt động của lỗ hổng
Agentic Workflows cho phép một AI agent phản hồi các sự kiện trên GitHub—chẳng hạn như các issue mới—bằng cách thực thi các lệnh được định nghĩa trong một tệp workflow. Noma Labs phát hiện ra rằng agent không phân biệt giữa các hướng dẫn workflow hợp lệ và văn bản được nhúng trong một bình luận do người dùng gửi. Bằng cách đăng một issue công khai mô phỏng yêu cầu của quản lý và chèn thêm một chỉ thị ẩn, kẻ tấn công có thể điều hướng agent để:
- Mở issue (có thể nhìn thấy công khai).
- Bao gồm một dòng trông có vẻ bình thường nhưng chứa một lệnh ngầm.
- Kích hoạt AI lấy các tệp từ một kho lưu trữ riêng tư mà workflow được phép đọc.
- Yêu cầu agent đăng nội dung đã lấy được dưới dạng phản hồi cho chính issue đó.
Các nhà nghiên cứu phát hiện ra rằng chỉ cần chèn từ “Additionally,” trước lệnh ẩn là đủ để vượt qua các rào chắn bảo vệ của GitHub. Không cần thêm quyền hạn, token hay mã tùy chỉnh nào—chỉ cần cách diễn đạt phù hợp.
Tại sao đây không chỉ đơn thuần là một lỗi phần mềm
Vấn đề nằm ở cấu trúc. AI agent coi bất kỳ văn bản nào nhận được từ một sự kiện kho lưu trữ là đáng tin cậy, điều này biến nội dung do người dùng tạo ra thành một vector đầu vào tương tự như tấn công SQL injection trong một ứng dụng web. Nếu một workflow cấp cho agent quyền đọc các repo riêng tư và khả năng bình luận công khai, sự kết hợp này sẽ tạo ra một con đường trực tiếp để trích xuất dữ liệu (data exfiltration).
Phản hồi từ GitHub
GitHub đã được thông báo về lỗ hổng này.
Các bước giảm thiểu rủi ro cho các đội ngũ
- Hạn chế quyền của agent: Chỉ cấp quyền đọc/ghi cho các kho lưu trữ riêng tư khi thực sự cần thiết.
- Chặn đăng bài công khai: Cấu hình các workflow sao cho các agent không thể đăng bình luận hoặc các thành phần khác lên các issue công khai.
- Coi tất cả đầu vào bên ngoài là không đáng tin cậy: Thêm các lớp xác thực để làm sạch (sanitize) hoặc bỏ qua văn bản do người dùng tạo ra trước khi nó đến được AI.
- Kiểm tra các trình kích hoạt workflow: Xem xét các sự kiện nào (issue, pull request, v.v.) kích hoạt agent và xác minh rằng các quyền liên quan khớp với mục đích sử dụng dự kiến.
Bài học rút ra: Một trợ lý AI có khả năng đọc mã nguồn riêng tư và đăng bài công khai sẽ chỉ an toàn tương ứng với các ranh giới mà bạn thiết lập xung quanh nó. Nếu không có các giới hạn quyền nghiêm ngặt và việc làm sạch đầu vào, một bình luận công khai duy nhất có thể biến một tính năng năng suất thành một vector rò rỉ dữ liệu.
