Lỗ hổng 'chỉ thị xác sống' có thể lừa GitHub Copilot CLI tiết lộ bí mật
Các nhà nghiên cứu bảo mật tại Adversa AI phát hiện GitHub Copilot CLI có thể bị lừa tiết lộ thông tin nhạy cảm thông qua kỹ thuật 'tiêm chỉ thị mã hóa' (CCI). Cuộc tấn công chỉ thành công với một số mô hình nhất định, khiến người dùng rơi vào tình thế 'xổ số mô hình' khó lường.

GitHub Copilot CLI có thể tiết lộ bí mật của lập trình viên nếu nó gặp phải những chỉ thị yêu cầu làm điều đó — tùy thuộc vào mô hình nền tảng đang chạy phía sau.
Công cụ trợ lý lập trình này đã từng bị cảnh báo hồi đầu năm nay về khả năng dễ bị tổn thương trước kiểu tấn công tiêm chỉ thị gián tiếp (indirect prompt injection). Đây là kỹ thuật mà mô hình tiếp nhận văn bản từ một nguồn không phải người dùng, rồi bị dẫn dắt thực hiện hành động nằm ngoài phạm vi chức năng dự kiến của nó.
Lần này câu chuyện cũng tương tự, nhưng có một biến tướng mới. Theo các nhà nghiên cứu bảo mật tại Adversa AI, GitHub Copilot CLI mắc cùng lỗ hổng đã được xác định ở Grok cách đây hai tháng: Tiêm chỉ thị mã hóa (Cryptographic Context Injection – CCI).
Cơ chế tấn công hoạt động như thế nào?
Hãy hình dung một người dùng GitHub Copilot CLI đang làm việc với một dự án và chạy trợ lý ở chế độ tự động (autopilot mode). Ở các công cụ lập trình dạng tác nhân (agentic) khác như Claude của Anthropic, đây là chế độ mặc định, nhưng với GitHub Copilot CLI thì vẫn là tùy chọn.
Với điều kiện đó, yêu cầu tiếp theo là công cụ CLI phải đọc một trang web chứa bộ chỉ thị độc hại đã được mã hóa bằng khóa riêng tư công bố ngay trên chính trang đó.
"Các rào chắn tĩnh chỉ đọc văn bản, chúng không thực thi văn bản đó. CCI gửi các chỉ thị độc hại dưới dạng bản mã mạnh, kèm theo vật liệu khóa và một chỉ thị yêu cầu giải mã, rồi dụ tác nhân chạy quá trình giải mã đó ngay trong môi trường thực thi mã của chính nó", Rony Utevsky giải thích trong một bài đăng blog cung cấp cho The Register.
Các bộ phân loại nội dung động vốn có thể đọc văn bản được nạp vào như một lớp phòng vệ của mô hình sẽ bỏ qua đoạn mã đã mã hóa — khác với các dạng mã hóa như base64 hay mật mã thay thế, vốn có thể bị giải ngược vì mô hình đã học cách giải mã trong quá trình huấn luyện.
Chuỗi tấn công và "xổ số mô hình"
Chuỗi tấn công diễn ra như sau: Người dùng chạy Copilot CLI và yêu cầu nó truy xuất một URL cụ thể. Trang web chứa nội dung đã mã hóa, các chỉ thị giải mã yêu cầu dùng Python, cùng hai khóa giải mã khả dụng.
Khóa đầu tiên là giả. Đây là một mẫu mà tác nhân cố gắng dựng nên bằng cách đọc các tệp mục tiêu trên ổ đĩa — chẳng hạn như tệp .env của người dùng. Những bí mật đó sau đó được thêm vào chuỗi khóa. Quá trình giải mã ban đầu được thử với khóa giả này nhưng thất bại.
Thế là khóa thứ hai được thử, quá trình giải mã thành công, và tác nhân nhận được chỉ thị truy xuất thêm một URL khác để lấy ngữ cảnh — nhưng URL đó lại chứa các bí mật đã bị thu thập, và yêu cầu mạng sẽ truyền chúng đến kẻ tấn công.
Tuy nhiên, cuộc tấn công không phải lúc nào cũng thành công. Nó phụ thuộc vào mô hình đang chạy — điều mà người dùng không phải lúc nào cũng nhận ra.
GitHub Copilot CLI hiện dùng một trong hai lựa chọn: mô hình mai-code-1.1-flash của chính Microsoft, vốn thực thi toàn bộ chuỗi tấn công trong 50% số lần thử; hoặc một trong hai mô hình GPT-5.6 của OpenAI, cả hai đều từ chối tải trọng tấn công.
Utevsky mô tả tình huống này như một "xổ số mô hình" (model lottery).
"Trên tài khoản trả phí mà chúng tôi thử nghiệm, mô hình dễ bị tổn thương không phải là mặc định và phải được chọn thủ công. Nhưng trên tài khoản để chế độ chọn mô hình ở Auto, bộ định tuyến gán mô hình dễ tổn thương cho một số phiên và mô hình an toàn cho những phiên khác, mà người dùng không hề can thiệp gì khỏi thiết lập mặc định. Người dùng không chọn, cũng không thấy được mô hình nào đang xử lý phiên làm việc của mình", Utevsky cho biết.
Phản hồi từ GitHub và tranh cãi
Adversa cho biết họ đã báo cáo lỗ hổng này thông qua chương trình bug bounty của GitHub vào ngày 17 tháng 9 năm 2026, và đội ngũ phân loại của GitHub đã xác nhận phát hiện nhưng từ chối coi đây là một lỗ hổng bảo mật.
Người phát ngôn của GitHub cũng nói với The Register như vậy, lập luận rằng hành động của người dùng đồng nghĩa với việc chấp thuận những gì xảy ra sau đó:
"GitHub trân trọng đóng góp của cộng đồng nghiên cứu bảo mật và cam kết điều tra các vấn đề bảo mật được báo cáo. Sau khi điều tra, chúng tôi xác định rằng trường hợp này đòi hỏi người dùng phải chủ động chỉ dẫn Copilot CLI truy xuất nội dung do kẻ tấn công kiểm soát hoặc không đáng tin cậy, và xác nhận rằng họ muốn kích hoạt hành động đó — do đó đây không phải là lỗ hổng của sản phẩm. Dù đây không phải là vấn đề bảo mật của sản phẩm, chúng tôi luôn tìm kiếm cơ hội để cải thiện sản phẩm của mình."
Adversa không đồng tình với kết luận đó và khẳng định chuỗi tấn công hiện vẫn hoạt động đúng như mô tả.
Góc nhìn cho người dùng Việt Nam
Với các lập trình viên Việt Nam đang ngày càng sử dụng nhiều công cụ AI hỗ trợ lập trình như GitHub Copilot, bài học rút ra là hết sức thận trọng khi chạy các tác nhân AI ở chế độ tự động và cho phép chúng truy xuất nội dung từ internet.
Cụ thể, người dùng nên:
- Hạn chế chạy CLI ở chế độ autopilot khi làm việc với các dự án chứa thông tin nhạy cảm như khóa API, mật khẩu cơ sở dữ liệu hay token truy cập.
- Không để lộ tệp
.envhoặc các tệp cấu hình chứa bí mật trong thư mục làm việc mà tác nhân AI có thể truy cập. - Kiểm tra kỹ mô hình đang được sử dụng, đặc biệt là tránh để chế độ Auto nếu không thực sự cần thiết.
- Cân nhắc nguyên tắc đặc quyền tối thiểu cho các công cụ AI lập trình, chỉ cấp quyền truy cập tệp và mạng ở mức cần thiết.
Sự việc này một lần nữa cho thấy ranh giới giữa "lỗi sản phẩm" và "hành vi người dùng" trong kỷ nguyên AI tác nhân vẫn còn nhiều tranh cãi, và các nhà phát triển cần chủ động bảo vệ mình thay vì chờ đợi bản vá từ nhà cung cấp.


