Sản phẩm
GitLost: Lỗ hổng tiêm nhiễm mã độc trên GitHub AI Agent cho phép rò rỉ dữ liệu riêng tư
(giờ Việt Nam)
Tóm tắt AI
Noma Labs phát hiện lỗ hổng GitLost cho phép kẻ tấn công điều khiển AI Agent của GitHub thông qua các Issue độc hại, từ đó truy cập trái phép vào các kho lưu trữ riêng tư mà không cần quyền hạn.
Bản dịch AI
TL;DR: Noma Labs đã phát hiện một lỗ hổng prompt injection nghiêm trọng trong GitHub Agentic Workflows mới của GitHub, cho phép một kẻ tấn công không cần xác thực có thể âm thầm lấy dữ liệu từ các kho lưu trữ (repository) riêng tư bằng cách đăng một GitHub Issue được tạo sẵn vào một kho lưu trữ công khai thuộc cùng tổ chức với các kho lưu trữ riêng tư đó. Noma Labs đặt tên cho lỗ hổng này là GitLost.
https://noma.security/wp-content/uploads/GitLost-full-video-1.mp4
Giới thiệu
GitHub gần đây đã ra mắt GitHub Agentic Workflows, kết hợp GitHub Actions (hệ thống tự động hóa của GitHub để chạy các tác vụ phản hồi lại các sự kiện trong kho lưu trữ) với một AI agent được hỗ trợ bởi Claude hoặc GitHub Copilot. GitHub Agentic Workflows cho phép các nhóm viết quy trình làm việc (workflow) của họ bằng Markdown thuần túy, và GitHub agent sẽ đọc các issue, gọi các công cụ và tự phản hồi. Là một nhà nghiên cứu lỗ hổng bảo mật với nền tảng về phát triển bảo mật, một trong những câu hỏi đầu tiên xuất hiện trong đầu tôi sau khi ra mắt tính năng này rất cơ bản và trực diện: Điều gì sẽ xảy ra khi GitHub agent đọc phải thứ mà nó không nên tin tưởng?
Câu trả lời là một cuộc tấn công indirect prompt-injection điển hình trong sách giáo khoa, loại tấn công âm thầm gửi dữ liệu riêng tư cho bất kỳ ai trên internet. Prompt injection là một lớp tấn công trong đó kẻ xấu ẩn các chỉ dẫn độc hại vào bên trong nội dung mà AI agent đọc được. Nội dung đó khiến agent thực hiện theo các chỉ dẫn ẩn thay vì các chỉ dẫn mà người vận hành dự định.
GitHub Agentic Workflows là gì?
GitHub Agentic Workflows cho phép các nhóm tự động hóa các tương tác với kho lưu trữ mã nguồn bằng ngôn ngữ tự nhiên. Các workflow nằm trong các tệp Markdown (.md), được biên dịch thành YAML (một định dạng tệp cấu hình phổ biến), các tệp Actions với phần mở rộng .yml, và chạy với sự hỗ trợ của một AI agent có các quyền hạn có thể cấu hình được. GitHub agent có thể đọc các issue, gọi các công cụ và truy cập vào các kho lưu trữ khác trong cùng một tổ chức.
Tổng quan về lỗ hổng GitLost
Nguyên nhân gốc rễ của lỗ hổng GitLost, đến nay, đã trở nên quen thuộc trong các hệ thống AI agentic: prompt injection. Trong hầu hết các cuộc tấn công prompt injection vào agent, agent coi nhầm nội dung không đáng tin cậy là nguồn chỉ dẫn đáng tin cậy và để bản thân bị điều hướng sai hoặc bị lợi dụng. Điều này xảy ra khi hệ thống không duy trì được ranh giới tin cậy nghiêm ngặt giữa các chỉ thị cấp hệ thống và dữ liệu người dùng không đáng tin cậy. Trong trường hợp cụ thể này, bất kỳ kẻ tấn công nào cũng có thể tạo một GitHub Issue và ẩn các lệnh bằng tiếng Anh thuần túy trong phần nội dung của issue mà GitHub agent sẽ thực hiện theo.
GitHub Agentic Workflow bị ảnh hưởng mà Noma Labs đã phát hiện được cấu hình để:
Để khai thác lỗ hổng này, kẻ tấn công không cần kỹ năng lập trình, quyền truy cập hay thông tin xác thực. Tất cả những gì cần làm là mở một issue trong một kho lưu trữ công khai thuộc về một tổ chức sử dụng thiết lập GitHub Agentic Workflow và chờ đợi.

Quy trình tấn công
Hãy cùng xem xét quy trình tấn công chính xác mà các nhà nghiên cứu lỗ hổng của Noma Labs đã thực hiện thành công: Đầu tiên, họ tạo một GitHub issue trông hoàn toàn vô hại, bao gồm một yêu cầu có vẻ hợp lý từ một Phó chủ tịch Kinh doanh sau khi gặp khách hàng, như hình dưới đây:

Trong ví dụ cụ thể này, hành động workflow được kích hoạt khi issue được gán, nhưng thử nghiệm của chúng tôi xác nhận rằng nó cũng hoạt động theo cách tương tự đối với các hành động GitHub workflow khác.
Sau đó, khi một hệ thống tự động hóa của GitHub gán issue đó, một workflow được kích hoạt bởi sự kiện đã khiến agent tìm nạp nội dung của tệp README.md từ cả hai kho lưu trữ poc (công khai) và testlocal (riêng tư). Cuối cùng, GitHub agent đã đăng chúng dưới dạng một bình luận công khai trên issue trong kho lưu trữ công khai, nơi bất kỳ ai cũng có thể truy cập và đọc được.
Khai thác “Bổ sung”
GitHub đã có các hàng rào bảo vệ (guardrails) hạn chế để ngăn chặn chính kịch bản này, nhưng chúng đã không bảo vệ được các kho lưu trữ như dự định. Việc thử nghiệm GitHub nhiều lần với các biến thể, giống như cách một kẻ tấn công sẽ làm, và thêm từ khóa “Additionally” (Bổ sung) đã kích hoạt hành vi không mong muốn trong mô hình, khiến nó định hình lại kết quả đầu ra thay vì từ chối. Về cơ bản, bằng cách đánh lừa mô hình, tôi đã có thể đảm bảo rằng các hàng rào bảo vệ của GitHub không hoạt động như dự định và không ngăn chặn được việc rò rỉ dữ liệu.
https://noma.security/wp-content/uploads/github_agentic_workflows.mp4
Bằng chứng khái niệm (PoC) về lỗ hổng
Với mục tiêu minh bạch hoàn toàn, các phát hiện đã được xác nhận của Noma Labs, bao gồm các bản tái tạo workflow và bằng chứng thực tế của chúng tôi, có thể được tìm thấy tại đây:
Dữ liệu bị rò rỉ bao gồm nội dung của tệp README.md từ:
Tại sao điều này quan trọng?
GitLost minh họa hoàn hảo một trong những thách thức bảo mật cơ bản mà mọi tổ chức phải đối mặt với các hệ thống AI agentic. Cửa sổ ngữ cảnh (context window) của agent cũng chính là bề mặt tấn công của nó. Bất kỳ nội dung nào mà agent đọc, dù là issue, pull request, bình luận hay tệp tin, đều có thể bị vũ khí hóa nếu agent coi nội dung đó là đầu vào chỉ dẫn.
Các mô hình bảo mật truyền thống thường giả định rằng các ranh giới tin cậy được thực thi bởi mã nguồn. Trong các hệ thống agentic, các ranh giới tin cậy được thực thi một phần bởi hành vi của mô hình, và các mô hình về bản chất là tuân theo chỉ dẫn. Các cuộc tấn công prompt injection đã trở thành, đối với AI agentic, những gì mà SQL injection đã từng là đối với các ứng dụng web: một lớp lỗ hổng có hệ thống, trên diện rộng, đòi hỏi các chiến lược và biện pháp phòng thủ có hệ thống tương tự.
Khuyến nghị của Noma dành cho các nhà phát triển/Chuyên viên bảo mật AI:
Công bố có trách nhiệm
GitLost đã được công bố có trách nhiệm với GitHub. Chi tiết về lỗ hổng được chia sẻ tại đây với sự hiểu biết của họ.
Bạn thấy điều này thú vị? Hãy đăng ký để nhận thêm các nghiên cứu về lỗ hổng AI agentic từ Noma Labs, hoặc xem qua: GrafanaGhost, DockerDash, Context Crush, GeminiJack. Bạn đang tìm kiếm một giải pháp bảo mật AI Agentic hiệu quả? Hãy liên hệ với chúng tôi để sắp xếp một buổi demo giải pháp toàn diện của Noma.
Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.