Một lớp lỗ hổng Prompt Injection mới, được đặt tên là “PromptPwnd,” đã được công ty an ninh mạng Aikido Security phát hiện. Các lỗ hổng này ảnh hưởng đến các hệ thống tích hợp tác nhân AI như Google Gemini CLI, Claude Code và OpenAI Codex trong các môi trường GitHub Actions và GitLab CI/CD. Vấn đề này đã được xác nhận ảnh hưởng đến ít nhất năm công ty thuộc danh sách Fortune 500, với bằng chứng cho thấy đây là một vấn đề phổ biến rộng rãi trong ngành.
Khám Phá Lớp Lỗ Hổng Prompt Injection Mới: PromptPwnd
Lỗ hổng PromptPwnd đại diện cho một mô hình tấn công mới, nơi đầu vào không đáng tin cậy từ người dùng được chèn trực tiếp vào các prompt của tác nhân AI. Điều này cho phép tác nhân AI thực thi các lệnh đặc quyền, dẫn đến việc rò rỉ thông tin nhạy cảm hoặc thao túng các quy trình làm việc. Đây là lần đầu tiên một cuộc tấn công bằng kỹ thuật Prompt Injection được chứng minh thành công trong việc xâm nhập các quy trình CI/CD pipelines trong thực tế.
Bản Chất của Prompt Injection trong CI/CD
Mô hình lỗ hổng PromptPwnd phát sinh khi nội dung không đáng tin cậy, ví dụ như tiêu đề hoặc nội dung của các vấn đề (issues) trên GitHub, được đưa trực tiếp vào các prompt AI. Kẻ tấn công có thể nhúng các chỉ dẫn độc hại vào những nội dung này. Các tác nhân AI tích hợp trong quy trình phát triển phần mềm, thường được sử dụng cho các tác vụ như phân loại vấn đề tự động hoặc gắn nhãn yêu cầu kéo (pull request), sau đó sẽ diễn giải sai các chỉ dẫn này là lệnh thay vì dữ liệu thông thường.
Sự tích hợp ngày càng tăng của AI vào các quy trình phát triển phần mềm làm tăng bề mặt tấn công. Khi AI được cấp quyền truy cập vào các công cụ và hệ thống trong môi trường CI/CD, bất kỳ sự hiểu lầm nào về đầu vào có thể dẫn đến hậu quả nghiêm trọng. Lớp lỗ hổng Prompt Injection này đặc biệt nguy hiểm vì nó lợi dụng sự tin cậy vào khả năng xử lý ngôn ngữ tự nhiên của AI.
Cơ Chế Khai Thác và Tác Động Kỹ Thuật
Khi mô hình AI diễn giải sai các chỉ dẫn độc hại, nó sử dụng các công cụ tích hợp sẵn để thực hiện các hành động trái phép. Những hành động này có thể bao gồm việc chỉnh sửa các yêu cầu kéo, hoặc trong những trường hợp nghiêm trọng hơn, đánh cắp các thông tin xác thực và khóa API nhạy cảm. Điều này có thể dẫn đến việc xâm nhập sâu hơn vào hệ thống và các tài nguyên liên quan.
Luồng Tấn công Chi tiết
Kịch bản tấn công điển hình bắt đầu với việc kẻ tấn công gửi một vấn đề (issue) hoặc yêu cầu kéo (pull request) chứa các chỉ dẫn ẩn trong tiêu đề hoặc nội dung. Ví dụ, một chỉ dẫn có thể yêu cầu AI “thêm mã độc vào PR” hoặc “ghi lại token môi trường”. Nếu hệ thống CI/CD được cấu hình để tự động xử lý các vấn đề này bằng AI và AI có quyền thực thi, nó sẽ thực hiện các lệnh đó.
Quá trình này không yêu cầu kẻ tấn công phải có quyền truy cập trực tiếp vào mã nguồn hay môi trường CI/CD. Thay vào đó, họ lợi dụng giao diện người dùng công khai (như GitHub issues) để gửi các yêu cầu có vẻ hợp lệ nhưng chứa đựng mục đích xấu. Điều này khiến việc phát hiện sớm trở nên khó khăn hơn, đặc biệt khi các hệ thống giám sát không được trang bị để nhận diện các mẫu Prompt Injection.
Ví dụ Thực Tế: Khai Thác Gemini CLI
Một ví dụ điển hình về lỗ hổng Prompt Injection này được tìm thấy trong kho lưu trữ Gemini CLI của Google. Quy trình làm việc tại đây đã chuyển trực tiếp đầu vào không đáng tin cậy từ các vấn đề GitHub vào prompt của mô hình AI. Aikido Security đã tạo ra một bằng chứng khái niệm (proof-of-concept) bằng cách gửi một vấn đề độc hại với các chỉ dẫn ẩn. Theo báo cáo của Aikido Security, tác nhân AI đã diễn giải các chỉ dẫn này và thực thi một lệnh để chỉnh sửa vấn đề, nhúng các khóa API và token nhạy cảm trực tiếp vào nội dung của vấn đề, từ đó làm lộ chúng.
Sau khi Aikido tiết lộ lỗ hổng một cách có trách nhiệm, Google đã vá lỗi này chỉ trong vòng bốn ngày. Sự cố này nhấn mạnh mức độ nghiêm trọng và khả năng khai thác thực tế của các lỗ hổng Prompt Injection khi AI được tích hợp vào các quy trình nhạy cảm như CI/CD.
Phạm Vi và Tác Động của Lỗ hổng Prompt Injection
Lỗ hổng này không chỉ giới hạn ở một tác nhân AI duy nhất. Các nhà nghiên cứu phát hiện ra rằng các mô hình kiến trúc tương tự tồn tại trên nhiều GitHub Actions được hỗ trợ bởi AI, bao gồm cả Claude Code Actions và OpenAI Codex Actions. Điều này đặc biệt đúng khi các cài đặt bảo mật bị cấu hình sai, cho phép người dùng không có đặc quyền kích hoạt các quy trình làm việc quan trọng. Hậu quả của một cuộc tấn công thành công có thể rất đa dạng, từ việc rò rỉ dữ liệu nhạy cảm đến việc chiếm quyền kiểm soát toàn bộ quy trình phát triển.
Tác động của PromptPwnd không chỉ dừng lại ở việc lộ thông tin. Nó có thể dẫn đến việc chèn mã độc vào kho lưu trữ mã nguồn, sửa đổi mã không được phép, hoặc thậm chí là triển khai các phiên bản phần mềm bị nhiễm độc. Điều này tạo ra một rủi ro đáng kể cho tính toàn vẹn và bảo mật của chuỗi cung ứng phần mềm, gây ảnh hưởng đến cả nhà phát triển và người dùng cuối.
Các Biện Pháp Khắc Phục và Phòng Ngừa Chống Lại Lỗ Hổng Prompt Injection
Để giải quyết lỗ hổng Prompt Injection “PromptPwnd,” Aikido Security khuyến nghị một số bước khắc phục và phòng ngừa quan trọng. Việc áp dụng các biện pháp này giúp giảm thiểu rủi ro và tăng cường bảo mật CI/CD trong môi trường phát triển phần mềm hiện đại.
Hạn Chế Quyền Hạn của AI Agent
Các tổ chức nên hạn chế bộ công cụ (toolset) có sẵn cho các tác nhân AI. Điều này có nghĩa là tránh cung cấp cho AI các công cụ có khả năng ghi vào các vấn đề (issues) hoặc yêu cầu kéo (pull requests) mà không có sự kiểm soát chặt chẽ. Quyền truy cập phải được cấp theo nguyên tắc đặc quyền tối thiểu, chỉ cho phép AI thực hiện những tác vụ cần thiết nhất cho chức năng của nó.
Cụ thể, nếu một tác nhân AI chỉ cần đọc thông tin để phân loại, nó không nên có quyền chỉnh sửa hoặc tạo nội dung mới. Việc kiểm soát chặt chẽ quyền truy cập của AI agent là một bước phòng thủ cơ bản để ngăn chặn các cuộc tấn công Prompt Injection lợi dụng khả năng ghi của AI vào hệ thống.
Xử Lý Đầu Vào Không Đáng Tin Cậy
Điều tối quan trọng là phải tránh chèn trực tiếp đầu vào không đáng tin cậy từ người dùng vào các prompt AI. Nếu không thể tránh khỏi, đầu vào đó phải được làm sạch (sanitize) và xác thực kỹ lưỡng trước khi đưa vào mô hình. Quá trình làm sạch cần loại bỏ mọi ký tự hoặc cấu trúc có thể được diễn giải sai thành lệnh. Ví dụ, các ký tự điều khiển hoặc cú pháp đặc biệt có thể được mã hóa hoặc lọc bỏ.
Hơn nữa, tất cả đầu ra được tạo ra bởi AI nên được coi là mã không đáng tin cậy và không được thực thi mà không có quá trình xác thực độc lập. Điều này có nghĩa là ngay cả khi AI tạo ra một đoạn mã hoặc một hành động có vẻ hợp lệ, nó vẫn cần được con người hoặc một hệ thống tự động khác kiểm tra trước khi được triển khai hoặc thực thi.
Tăng Cường Bảo Mật Quy Trình CI/CD
Giới hạn quyền truy cập của các token GitHub theo địa chỉ IP có thể giúp hạn chế thiệt hại tiềm tàng từ các thông tin xác thực bị rò rỉ. Bằng cách ràng buộc các token chỉ hoạt động từ các địa chỉ IP đáng tin cậy, ngay cả khi một token bị đánh cắp thông qua lỗ hổng Prompt Injection, khả năng lạm dụng nó cũng sẽ bị hạn chế đáng kể.
Aikido cung cấp một công cụ miễn phí để quét các kho lưu trữ GitHub và GitLab nhằm phát hiện lỗ hổng này. Ngoài ra, các nhà phát triển cũng có thể sử dụng các công cụ mã nguồn mở để kiểm tra các tệp .yml của họ. Việc thường xuyên kiểm tra cấu hình CI/CD và sử dụng các công cụ chuyên dụng là cần thiết để duy trì một môi trường phát triển an toàn trước các mối đe dọa mới.
Kiểm tra các tệp cấu hình .yml cho các CI/CD pipelines là rất quan trọng để xác định các mẫu có thể dẫn đến Prompt Injection. Các nhà phát triển nên tìm kiếm các trường hợp nơi dữ liệu đầu vào người dùng (ví dụ: từ github.event.issue.title hoặc github.event.pull_request.body) được truyền trực tiếp vào lệnh gọi AI mà không có bước xác thực trung gian.
# Ví dụ cấu hình GitHub Actions cần kiểm tra
name: AI-Powered Issue Triage
on:
issues:
types: [opened, edited]
jobs:
analyze_issue:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Call AI for analysis
run: |
# Dòng này có thể dễ bị tổn thương nếu $ISSUE_BODY không được làm sạch
AI_PROMPT="Analyze this issue: ${{ github.event.issue.body }}"
# Giả định một công cụ AI CLI
/path/to/ai_tool --prompt "$AI_PROMPT" --action "classify_issue"
- name: Update Issue (potentially dangerous)
if: success()
run: |
# Nếu AI có quyền và bị tiêm lệnh, nó có thể chạy lệnh này
# để thêm thông tin nhạy cảm vào issue hoặc sửa đổi nó.
echo "AI has analyzed and updated the issue."
Ví dụ trên minh họa một kịch bản tiềm năng nơi nội dung của một vấn đề GitHub được truyền trực tiếp vào prompt của một công cụ AI. Nếu nội dung github.event.issue.body chứa chỉ dẫn độc hại, công cụ AI có thể thực thi các lệnh không mong muốn, dẫn đến rò rỉ dữ liệu hoặc các hành vi độc hại khác. Việc rà soát và điều chỉnh các cấu hình tương tự là một bước quan trọng để phòng ngừa lỗ hổng Prompt Injection.










