Trust No AI: Prompt Injection Along the CIA Security Triad - Part 1

Tóm lược
Tam giác bảo mật CIA - Confidentiality (tính bí mật), Integrity (tính toàn vẹn), Availability (tính sẵn sàng) - là nền tảng của dữ liệu và an ninh mạng. Với sự xuất hiện của các mô hình LLM, một loại đe dọa mới, gọi là prompt injection, lần đầu tiên được biết đến lần đầu tiên vào năm 2022. Từ đấy, nhiều lỗ hổng và khai thác bảo mật đã được ghi nhận trong các hệ thống LLM đang hoạt động, bao gồm cả từ những nhà cung cấp hàng đầu như OpenAI, Microsoft, Anthropic và Google. Bài báo này tổng hợp các ví dụ về khai thác thực tế và bằng chứng khái niệm, dựa trên nghiên cứu được thực hiện và công khai bởi tác giả, chứng minh cách thức tiêm lệnh (prompt injection) làm suy yếu bộ ba CIA (Confidentiality, Integrity, Availability) và gây ra những rủi ro liên tục đối với an ninh mạng và các hệ thống AI nói chung.
Giới thiệu
Bài báo này chững minh rằng các lỗ hổng prompt injection trong các hệ thống thực tế ảnh hưởng đến tam giác CIA. Bài báo nhấn mạnh cách thức prompt injection từ những dữ liệu không tin cậy ảnh hưởng đến các thuộc tính bảo mật cốt lõi của AI và thông tin và các biện pháp khắc phục mà các nhà cung cấp áp dụng để giảm thiểu rủi ro. Hơn nữa, tác giả mong muốn sẽ tiếp tục thu hẹp khoảng cách dường như tồn tại giữa nghiên cứu bảo mật học thuật và nghiên cứu bảo mật trong ngành.
- Tam giác bảo mật CIA là gì?
CIA là viết tắt của Confidentiality (tính bỉ mật), Integrity (tính toàn vẹn), Availability (tính sẵn sàng), là 3 thuộc tính cốt lõi định hướng chính sách bảo mật của tổ chức. Nguồn gốc của nó rất khó xác định, và dường như lần đề cập chính thức đầu tiên chỉ xảy ra vào đầu những năm 2000, mặc dù các khải niệm cốt lõi đã tồn tại từ hàng thập kỷ, thậm chí hàng thế kỉ trước.
Có những tranh cãi rằng mô hình chưa hoàn chỉnh và có thể hưởng lợi từ việc mở rộng thêm. Tuy nhiên, dường như có sự đồng thuận rằng bộ ba này tạo thành những thuộc tính cần thiết liên quan đến dữ liệu.
Hơn nữa, NIST đã nhấn mạnh Quyền riêng tư, Toàn vẹn và Khả dụng trong một phân loại tấn công AI gần đây.
- Prompt Injection là gì?
Về bản chất, prompt injection đề cập đến việc trộn lẫn dữ liệu đáng tin cậy và không đáng tin cậy, như hướng dẫn hệ thống trộn với hướng dẫn hoặc dữ liệu của người dùng.
Kết quả là một lệnh cuối cùng (đôi khi cũng gọi là truy vấn) được gửi đến một LLM để suy luận. Nếu các phần của lệnh được kiểm soát bởi một người tấn công, người tấn công có thể đọc hoặc ghi đè lên các hướng dẫn và dữ liệu gốc, tiềm ẩn khả năng thực hiện các hành động gây hại và nguy hiểm.
Nhóm đã phát hiện ra loại lỗ hổng (hành vi) ban đầu là Preamble, nhóm đã tiết lộ cho OpenAI về lỗ hổng Prompt Injection vào tháng 5 năm 2022, sau đó công bố công khai nó vào cuối năm đó. Goodside đã làm sáng tỏ thêm vấn đề này, song song Willison đặt tên cho nó là “Prompt Injection”.
Greshake và các cộng sự nhấn mạng các thất bại có thể xảy ra khi đưa dữ liệu không đáng tin cậy vào trong các prompt, được gọi là prompt injection gián tiếp.
Mặc dù thường có sự tương quan giữa prompt injection và SQL injection (cả hai đều là lỗi bảo mật ứng dụng từ phía người gọi), nó rất quan trọng để làm nổi bật prompt injection đại diện cho một thách thức hiện tại chưa có các khắc phục xác định. Đối với SQL Injection hướng dẫn chính xác có thể được đưa cho các nhà phát triển để ngăn chặn điều đó, tuy nhiên hiện tại không có hướng dẫn như vậy cho prompt injection.
Prompt Injection trong bộ ba CIA
Các tấn công prompt injection có thể xâm phạm tất cả các khía cạnh của bộ ba CIA. Bằng việc phân tích các tính huống thực tế, ta có thể hiểu rõ hơn về các lỗ hổng và tác động của các cuộc tấn công trên các nguyên tắc bảo mật cốt lõi của CIA.
Các phần tiếp theo cung cấp những ví dụ cụ thể về việc khai thác prompt injection ảnh hưởng đến CIA cũng như các chiến lược giảm thiểu mà các nhà cung cấp áp dụng.
Sự mất bảo mật
Bảo mật “Việc thông tin riêng tư được giữ kín”.
Bảo mật là sự bảo vệ dữ liệu. Đã có rất nhiều tìm hiểu về việc tại sao các ứng dụng LLM và chatbot sẽ có thể gửi thông tin riêng tư cho các server thứ 3 do prompt injection gián tiếp. Những chúng ta sẽ bắt đầu bằng một trường hợp cơ bản mà các nhà phát triển đôi khi bị sai, đó là giả định rằng hệ thống là riêng tư.
Trường hợp 1: Rò rỉ lệnh hệ thống
Đôi khi các nhà phát triển đặt các thông tin nhạy cảm vào lệnh hệ thống, nhưng lệnh hệ thống nằm cùng trong một ranh giới tin cậy với lệnh đầu vào của người dùng. Vì vậy, thường thì người dùng có thể dã dàng truy xuất được lệnh hệ thống.
Trò chơi Gandalf nổi tiếng của Lakera là một ví dụ tuyệt vời để giáo dục người dùng về vấn đề này, thách thức người dùng tìm kiếm prompt injection để tiết lộ bí mật, và việc rò rỉ lệnh trong Bing Chat của Microsoft là một ví dụ khác như được giải thích bởi Learn Prompting.
Chatbot của Microsoft codename là “Sydney” đã bị thao túng thông qua prompt injection. Bằng cách nhúng các lệnh nhất định, kẻ tấn công đã đánh lừa AI tiết lộ tên mã nội bộ và các hướng dẫn hệ thống ẩn, làm lộ thông tin bảo mật của hệ thống.

Trường hợp 2: Kết xuất Hình ảnh Tự động và Rò rỉ Dữ liệu Markdown Hình ảnh trong các ứng dụng LLM
Đã chỉ ra rằng các ứng dụng LLM thường xuyên dễ bị rò rỉ dữ liệu thông qua việc kết xuất hình ảnh từ các miền không đáng tin cậy, nơi kẻ tấn công khiến LLM thêm dữ liệu vào URL hình ảnh, từ đó làm rò rỉ thông tin đến máy chủ bên thứ 3.
Thực tế, đây là một trong những lỗ hổng bảo mật ứng dụng phố biến nhất trong các ứng dụng LLM, và danh sách các hệ thống dễ bị tấn công mà tác giả phát hiện và báo cáo cho các nhà cung cấp bao gồm (nhưng không giới hạn):
Microsoft Bing Chat
OpenAI ChatGPT
Anthropic Claude
Microsoft Azure AI
Google Bard
Google Vertex AI
Google NotebookLM
Google AI Studio
Google Colab
Discord
Microsoft GitHub Copilot Chat
Bên cạnh các ứng dụng web, lỗ hổng này thường có trên cả ứng dụng điện thoại hoặc máy tính.
Trong trường hợp này, chúng ta thử nghiệm trên ChatGPT Mar 14 Version, được tiến hành như sau:
Người dùng truy cập vào trang web của kẻ tấn công, chọn và sao chép một đoạn văn bản.
Mã JavaScript của kẻ tấn công chặn sự kiện “copy” và tiêm nhiễm một đoạn lệnh độc hại vào văn bản đã sao chép, khiến nó bị nhiễm độc.
Người dùng dán văn bản đã sao chép vào cuộc trò chuyện với ChatGPT mà không biết rằng nó đã bị thay đổi.
Lệnh độc hại yêu cầu ChatGPT chèn một hình ảnh nhỏ một pixel (bằng markdown) vào câu trả lời và thêm dữ liệu nhạy cảm từ cuộc trò chuyện vào tham số URL của hình ảnh. Khi hình ảnh bắt đầu tải, dữ liệu nhạy cảm sẽ được gửi đến máy chủ từ xa của kẻ tấn công thông qua yêu cầu GET.
Tùy chọn bổ sung, lệnh độc hại có thể yêu cầu ChatGPT chèn hình ảnh vào tất cả các câu trả lời sau này, giúp kẻ tấn công đánh cắp dữ liệu một cách liên tục.
Các hậu quả có thể xảy ra:
Rò rỉ dữ liệu nhạy cảm, bao gồm mã nguồn, mật khẩu, khóa API, toàn bộ lệnh nhắc (prompts) của người dùng, v.v.
Khả năng tạo liên kết lừa đảo (phishing) trong câu trả lời của ChatGPT, khiến người dùng khác có thể bị tấn công.
Làm ô nhiễm đầu ra của ChatGPT bằng quảng cáo hoặc hình ảnh không phù hợp (NSFW).
Khả năng đếm số lần văn bản bị nhiễm được dán vào ChatGPT và xác định các lệnh nhắc đã được áp dụng.
Sau khi đọc kịch bản tấn công, có vẻ như cuộc tấn công có thể được thực hiện khá dễ dàng, nhưng thực tế không phải vậy. Vấn đề lớn nhất là ChatGPT được thiết kế để tạo ra kết quả không xác định trước (nondeterministic). Nó có các tham số nội bộ kiểm soát mức độ ngẫu nhiên của đầu ra.
Ví dụ, tham số "temperature" có ảnh hưởng quan trọng:
Giá trị cao làm cho đầu ra ngẫu nhiên hơn.
Giá trị thấp giúp đầu ra tập trung và có tính xác định cao hơn.
Mặc định, nhiệt độ của ChatGPT dường như là 1, nghĩa là đầu ra có thể thay đổi đáng kể ngay cả với cùng một đầu vào. Vì vậy, các lệnh nhắc (bao gồm cả PoC và tất cả các ví dụ) đôi khi có thể không hoạt động như mong đợi.
Tuy nhiên, tôi nghĩ vấn đề này có thể được khắc phục bằng cách cải thiện lệnh nhắc (prompt) và tìm vị trí thích hợp nhất trong văn bản để tiêm nhiễm.
Còn có những yếu tố khác ảnh hưởng đến tỷ lệ thành công của cuộc tấn công:
Chủ đề của cuộc trò chuyện trước đó.
- ChatGPT ghi nhớ ngữ cảnh của cuộc trò chuyện và có thể thay đổi phản hồi dựa trên đó.
Cách người dùng nhập yêu cầu vào ChatGPT sau khi bị tiêm nhiễm lệnh.
- Việc người dùng nhập một câu khẳng định hay một câu hỏi có thể ảnh hưởng đến kết quả.
Nội dung mà kẻ tấn công muốn chèn vào URL webhook.
- Việc chèn các lệnh nhắc trước đó của người dùng hoặc mã nguồn tương đối dễ dàng, nhưng chèn dữ liệu nhạy cảm như mật khẩu hoặc khóa API lại khó hơn nhiều.
Việc đánh cắp dữ liệu từ những tin nhắn quá xa trong cuộc trò chuyện có thể không hiệu quả.
- Tuy nhiên, điều này chưa được kiểm tra đầy đủ.
Vị trí của lệnh nhắc độc hại trong văn bản có ảnh hưởng đến kết quả.
- Đặt lệnh ở các vị trí khác nhau trong văn bản có thể tạo ra phản hồi khác nhau.
Cách để cải thiện cuộc tấn công:
Tạo các lệnh nhắc (prompt) mạnh mẽ hơn và ít phụ thuộc vào ngữ cảnh.
Thử nghiệm tấn công để đánh cắp nhiều loại dữ liệu nhạy cảm khác nhau.
Sử dụng các kỹ thuật "jailbreak" để dễ dàng truy cập vào dữ liệu nhạy cảm hơn.
Tìm cách làm cho ChatGPT chèn hình ảnh webhook một cách có điều kiện, dựa trên nội dung của lệnh nhắc từ người dùng.
Ví dụ: Nếu trong lệnh nhắc có chứa dữ liệu nhạy cảm → chèn webhook.
Nếu không có dữ liệu nhạy cảm → không chèn webhook.
Điều chỉnh cuộc tấn công để hoạt động trên GPT-4.
Tìm lỗ hổng XSS trong markdown của hình ảnh.
Trường hợp 3: Mở rộng tự động các liên kết
Vấn đề rò rỉ dữ liệu này lại liên quan đến liên kết (hyperlinks). Các phần mềm như Slack, Discord, Teams... sẽ tự động kết nối và cố gắng lấy thông tin cơ bản từ một liên kết để hiển thị bản xem trước của trang cho người dùng.
Kẻ tấn công có thể lợi dụng điều này trong cuộc tấn công tiêm nhiễm lệnh (prompt injection) để hiển thị một liên kết, thêm thông tin từ ngữ cảnh cuộc trò chuyện và rò rỉ dữ liệu tự động.
Dễ dàng nghĩ đến việc rò rỉ dữ liệu qua các liên kết ngay lập tức. Nhiều ứng dụng trò chuyện tự động kiểm tra các URL theo mặc định và gửi một yêu cầu (đôi khi là phía máy chủ, đôi khi là phía máy khách) đến liên kết đó. Đây chính là kênh rò rỉ dữ liệu.

Điều thú vị (hoặc đáng sợ) là AI cũng có thể tóm tắt lịch sử cuộc trò chuyện và đính kèm nó vào một liên kết. Đây là kết quả mà máy chủ mục tiêu nhận được:

Điều này trở nên nguy hiểm khi trong bất kỳ phần nào của cuộc trò chuyện có sự indirect prompt injection xảy ra, nơi dữ liệu hoặc chỉ thị bị kéo vào từ một nguồn không đáng tin cậy. Điều này có thể dẫn đến việc truyền tải thông tin sai lệch hoặc lệnh độc hại mà người dùng không hề hay biết.
Mối đe dọa từ phản hồi của LLM đối với Chatbots
Ví dụ, nếu bạn xây dựng một chatbot, hay cân nhắc những mối đe dọa từ prompt injection:
Các thẻ LLM và đề cập người dùng khác, chẳng hạn như @all, @everyone,…
Các thẻ này có thể bị lợi dụng để gửi thông báo đến tất cả người dùng trong nhóm, hoặc thao túng hành vi của chatbot.Rò rỉ dữ liệu qua liên kết
Nhiều ứng dụng trò chuyện tự động truy cập các liên kết. Điều này có thể dẫn đến việc rò rỉ dữ liệu, nếu một phản hồi được tạo ra từ LLM chứa một liên kết do kẻ tấn công kiểm soát. Hãy tham khảo các ví dụ về nhiều ứng dụng trò chuyện trong phần phụ lục.Trong một cuộc tấn công prompt injection, AI có thể được lợi dụng để thực hiện các thao tác với lịch sử trò chuyện, tóm tắt hoặc tìm kiếm mật khẩu và những thông tin khác, sau đó đính kèm vào liên kết.
LLM trả về các lệnh đặc biệt của ứng dụng, ví dụ như !command, v.v.
Liệu điều này có dẫn đến việc kích hoạt các lệnh? Gửi tin nhắn? Điều này phụ thuộc vào nền tảng trò chuyện và cách triển khai chatbot. Việc sử dụng rõ ràng các ký tự như / và tương tác với người dùng sẽ giúp giảm thiểu điều này. Hãy xem xét lại bot của bạn để tìm những lệnh như vậy.Các tính năng khác mà client hỗ trợ (hoặc ngăn xếp phân tích cú pháp) có thể bị kích hoạt bởi phản hồi?
Bạn cần xác định và hạn chế khả năng này để giảm thiểu rủi ro.
Tóm lại, nếu cuộc trò chuyện không chứa dữ liệu bị kiểm soát bởi kẻ tấn công (ví dụ qua các tìm kiếm trên Internet, truy xuất dữ liệu khác, hoặc sao chép/dán), tác động có thể bị giới hạn (tuy nhiên vẫn cần xem xét kỹ về các tự prompt injection).
Trường hợp 4: Các liên kết có thể ấn
Giống như việc truy xuất hình ảnh, nhiều ứng dụng hiển thị các liên kết có thể nhấp. Điều này có thể bị kẻ tấn công lợi dụng để lừa đảo người dùng qua phishing và các chiêu trò gian lận, nhưng cũng có thể tạo ra cơ hội rò rỉ dữ liệu bằng cách đính kèm thông tin ngữ cảnh trò chuyện vào liên kết.
Cách thức hoạt động của mối đe dọa này là kẻ tấn công có thể tạo ra một phản hồi có chứa một liên kết được nhúng, mà khi người dùng nhấp vào, nó sẽ gửi thông tin trò chuyện, bao gồm các dữ liệu nhạy cảm, đến máy chủ do kẻ tấn công kiểm soát. Điều này có thể xảy ra mà người dùng không hề hay biết.
Để giảm thiểu nguy cơ này:
Giới hạn khả năng mở liên kết tự động trong các ứng dụng.
Kiểm tra kỹ các liên kết và đảm bảo rằng không có dữ liệu nhạy cảm nào bị đính kèm vào chúng
Cảnh báo người dùng về phishing và các liên kết khả nghi.
Cách tiếp cận bảo mật trong việc xử lý các liên kết có thể nhấp và việc kiểm tra liên kết một cách kỹ lưỡng là rất quan trọng để ngăn chặn rò rỉ dữ liệu và tấn công phishing.
Kết hợp với các cuộc tấn công như ASCII Smuggling, việc rò rỉ dữ liệu có thể tinh vi hơn với các ký tự vô hình. ASCII Smuggling là kỹ thuật mà kẻ tấn công sử dụng để giấu dữ liệu trong các ký tự không hiển thị, hoặc các ký tự đặc biệt, làm cho chúng không thể nhìn thấy bằng mắt thường nhưng vẫn tồn tại trong mã nguồn hoặc giao tiếp mạng.
Khi được kết hợp với các cuộc tấn công rò rỉ dữ liệu qua liên kết, kẻ tấn công có thể tạo ra một liên kết chứa dữ liệu bị mã hóa hoặc giấu trong các ký tự vô hình. Những ký tự này có thể được ẩn dưới dạng ký tự không hiển thị hoặc không gây chú ý, nhưng vẫn có thể được sử dụng để truyền tải thông tin hoặc thực hiện các cuộc tấn công.
Ví dụ về cách thức hoạt động:
Kẻ tấn công có thể lợi dụng việc tạo ra các liên kết hoặc dữ liệu chứa các ký tự vô hình (như ký tự điều khiển ASCII) trong URL hoặc thông điệp.
Các ký tự này có thể không hiển thị trong giao diện người dùng nhưng vẫn được gửi trong các yêu cầu HTTP, giúp kẻ tấn công rò rỉ dữ liệu mà người dùng không thể nhận ra.
Để phòng ngừa:
Xử lý và lọc các ký tự đặc biệt trong URL và đầu vào từ người dùng để ngăn ngừa ASCII Smuggling.
Xác thực và mã hóa tất cả các liên kết và dữ liệu đầu vào để đảm bảo rằng các ký tự vô hình hoặc các lệnh không thể được tiêm vào.
Giám sát và kiểm tra thường xuyên các hoạt động liên quan đến các liên kết và dữ liệu gửi qua các ứng dụng chat hoặc web, để phát hiện các mẫu tấn công tinh vi.
Vào tháng 2 năm 2024, một lỗ hổng trong Microsoft 365 Copilot đã được phát hiện và thông báo một cách có trách nhiệm cho Microsoft. Lỗ hổng này kết hợp giữa tiêm lệnh (prompt injection) được gửi qua email phishing với việc tự động kích hoạt công cụ để truy xuất thông tin nhạy cảm từ hộp thư đến của người dùng, và sau đó hiển thị dữ liệu dưới dạng một liên kết có thể nhấp chứa dữ liệu vô hình đối với người dùng.
Cách thức hoạt động của lỗ hổng:
Kẻ tấn công gửi một email phishing chứa lệnh tiêm (prompt injection), có thể yêu cầu Microsoft 365 Copilot thực hiện một hành động.
Công cụ tự động sẽ kích hoạt và truy xuất dữ liệu nhạy cảm từ hộp thư đến của người dùng (chẳng hạn như thông tin cá nhân hoặc thông tin nhạy cảm khác).
Dữ liệu này sau đó được hiển thị dưới dạng một liên kết có thể nhấp, tuy nhiên, dữ liệu đính kèm trong liên kết lại là vô hình, khiến người dùng không thể phát hiện ra.
Rủi ro từ lỗ hổng này:
Lừa đảo và rò rỉ dữ liệu: Kẻ tấn công có thể lợi dụng lỗ hổng này để lấy cắp dữ liệu nhạy cảm mà người dùng không hề hay biết.
Khó phát hiện: Vì dữ liệu được ẩn dưới dạng ký tự vô hình hoặc trong liên kết mà người dùng không thể nhìn thấy, rất khó để phát hiện ra mối nguy hiểm này.
Các biện pháp bảo vệ:
Phát hiện và ngăn chặn phishing: Sử dụng các công cụ và chiến lược để phát hiện và ngăn chặn các email phishing ngay từ đầu.
Cải thiện tính năng bảo mật của công cụ: Microsoft và các nhà phát triển cần cải thiện khả năng kiểm tra và xác minh đầu vào từ người dùng để ngăn ngừa prompt injection và lỗ hổng tương tự.
Xem xét các cơ chế cảnh báo và thông báo cho người dùng khi có liên kết khả nghi hoặc chứa dữ liệu vô hình.
Lỗ hổng này cho thấy mức độ nghiêm trọng của việc kết hợp tấn công phishing với các công cụ AI tự động, và tầm quan trọng của việc bảo vệ các ứng dụng AI khỏi việc bị lợi dụng để rò rỉ thông tin nhạy cảm.
Cuộc tấn công này đã dàn dựng dữ liệu để rò rỉ và yêu cầu người dùng nhấp vào liên kết, dẫn đến việc rò rỉ thông tin nhạy cảm tới máy chủ do kẻ tấn công kiểm soát. Lỗ hổng này đã được Microsoft sửa chữa vào tháng 7 năm 2024.
Amazon Q for Business cũng đã bị vulnerable (dễ bị tấn công) qua một vector rò rỉ dữ liệu tương tự. Tuy nhiên, Amazon đã giải quyết vấn đề này bằng cách không hiển thị các liên kết trong các tình huống này, giúp ngăn ngừa khả năng rò rỉ dữ liệu thông qua các liên kết có thể nhấp.
Các biện pháp bảo vệ đã được triển khai:
Microsoft: Sửa chữa lỗ hổng liên quan đến prompt injection và rò rỉ dữ liệu qua liên kết vô hình.
Amazon: Ngừng hiển thị các liên kết trong các tình huống nguy hiểm, làm giảm nguy cơ người dùng vô tình nhấp vào các liên kết độc hại dẫn đến việc rò rỉ dữ liệu.
Tầm quan trọng:
Cuộc tấn công này cho thấy mức độ tinh vi của các mối đe dọa bảo mật khi kết hợp prompt injection và rò rỉ dữ liệu qua liên kết. Các tổ chức như Microsoft và Amazon đã phải nhanh chóng đưa ra các biện pháp phòng ngừa để ngăn chặn các cuộc tấn công này, bao gồm việc kiểm soát cách hiển thị và xử lý liên kết trong các ứng dụng của họ.
Trường hợp 5: Kích hoạt công cụ - Duyệt Web
Một ví dụ khác là prompt injection có thể kích hoạt tự động các công cụ, làm gửi thông tin tới máy chủ của bên thứ ba.
Điều này đã được chứng minh trong một lỗ hổng đầu-cuối (end-to-end exploit), cho thấy cách mà kẻ tấn công có thể đánh cắp email của người dùng thông qua việc sử dụng Zapier Plugin. Kẻ tấn công có thể lợi dụng prompt injection để kích hoạt plugin này và khiến nó gửi thông tin (email người dùng) đến một máy chủ mà kẻ tấn công kiểm soát.
Biện pháp giảm thiệu đã được triển khai:
- Yêu cầu xác nhận từ người dùng trước khi gửi email hoặc thực hiện bất kỳ hành động nào liên quan đến dữ liệu nhạy cảm. Điều này giúp người dùng có cơ hội xem xét và xác nhận hành động trước khi bất kỳ thông tin nào bị rò rỉ.
Tầm quan trọng của việc ngăn ngừa:
Tự động hóa công cụ có thể trở thành một con đường nguy hiểm nếu không được kiểm soát chặt chẽ. Một khi kẻ tấn công có thể kích hoạt các công cụ để gửi thông tin đến máy chủ của mình, rủi ro bị lộ dữ liệu hoặc bị lừa đảo trở nên rất lớn.
Xác nhận người dùng là một biện pháp bảo mật quan trọng để đảm bảo rằng bất kỳ hành động nào liên quan đến dữ liệu nhạy cảm đều phải được người dùng phê duyệt trước, giảm thiểu nguy cơ bị tấn công.
Đây là POC của cuộc tấn công này:
Kẻ tấn công lưu trữ các hướng dẫn LLM độc hại trên một trang web.
Nạn nhân truy cập vào trang web độc hại này thông qua ChatGPT, có thể sử dụng plugin duyệt web, như WebPilot.
Tiêm lệnh (prompt injection) xảy ra, và các hướng dẫn trên trang web kiểm soát ChatGPT.
ChatGPT làm theo các hướng dẫn và lấy thông tin email của người dùng, tóm tắt và mã hóa URL thông tin đó.
Tiếp theo, bản tóm tắt này được đính kèm vào một URL do kẻ tấn công kiểm soát và yêu cầu ChatGPT truy xuất nó.
ChatGPT sẽ kích hoạt plugin duyệt web trên URL đó, và dữ liệu sẽ bị gửi đến máy chủ của kẻ tấn công.
Tóm tắt: Cuộc tấn công này lợi dụng việc prompt injection vào ChatGPT thông qua một trang web độc hại để chiếm quyền điều khiển công cụ và rò rỉ thông tin nhạy cảm (như email) từ người dùng. Bằng cách này, kẻ tấn công có thể lấy dữ liệu cá nhân mà người dùng không hề hay biết.

Dưới đây là payload prompt injection được sử dụng cho mục đích tham khảo và giáo dục:


Chiến lược giảm thiểu:
Con người trong vòng lặp (Human in the Loop):
Plugin không nên có khả năng gọi một plugin khác (mặc định), đặc biệt là những plugin có các thao tác quan trọng.
Người dùng phải thấy rõ plugin nào sẽ được kích hoạt và dữ liệu nào sẽ được gửi đi. Cung cấp khả năng chỉnh sửa dữ liệu trước khi gửi có thể là một cách bảo mật bổ sung.
Hợp đồng bảo mật và mô hình mối đe dọa cho plugin:
Cần xây dựng một hợp đồng bảo mật và mô hình mối đe dọa cho các plugin để đảm bảo một hệ thống hạ tầng bảo mật và mở, nơi tất cả các bên đều hiểu rõ trách nhiệm bảo mật của mình.
Microsoft đã công bố trong sự kiện Build rằng họ sẽ hỗ trợ/cho phép cài đặt tất cả các plugin như nhau.
Không tin tưởng tuyệt đối vào các plugin hoặc ChatGPT:
- ChatGPT phải giả định rằng plugin không thể tin cậy (ví dụ: prompt injection), và ngược lại, plugin cũng không thể tin tưởng mù quáng vào các lệnh gọi từ ChatGPT (do ChatGPT có thể trở thành "phó tướng nhầm lẫn" - confused deputy).
Plugin xử lý thông tin cá nhân (PII) và/hoặc giả mạo người dùng:
- Các plugin xử lý thông tin cá nhân (PII) và giả mạo người dùng có thể mang rủi ro rất cao, và cần phải có các biện pháp bảo vệ nghiêm ngặt hơn.
Cô lập (Isolation):
- Việc sử dụng Kernel LLM và Sandbox LLM có thể giúp tạo ra sự cô lập giữa các tác vụ và plugin, giảm thiểu rủi ro tấn công. Tham khảo Dual LLM pattern để biết thêm chi tiết.
Quy trình tương tác của con người với AI:
Cần thêm suy nghĩ và cân nhắc về cách mà con người tương tác và duy trì kiểm soát đối với AI ở mọi bước để tránh các hệ thống chạy ngoài tầm kiểm soát (như sâu máy tính, virus).
AI có khả năng mở rộng và vận hành rất nhanh, điều này càng làm tăng rủi ro trong trường hợp không kiểm soát được.
Tóm lại, để giảm thiểu mối đe dọa từ các cuộc tấn công, cần có một quy trình rõ ràng trong việc xác định và kiểm tra các plugin, đảm bảo rằng con người luôn giữ quyền kiểm soát đối với các hệ thống AI, và mọi thành phần trong hệ thống đều có trách nhiệm bảo mật rõ ràng.
Trường hợp 6: Kích hoạt công cụ - Chat với Code Plugin
Các công cụ có thể có khả năng thay đổi quyền truy cập đối với các đối tượng, điều này có thể tương tự như các tấn công Cross-Site Request Forgery (CSRF) hoặc Server-Side Request Forgery (SSRF). Kẻ tấn công có thể lợi dụng tính năng này để:
Sửa đổi cấu hình hệ thống: Bao gồm thay đổi các thiết lập xác thực và phân quyền, từ đó có thể cho phép truy cập trái phép vào các tài nguyên bảo mật.
Tiết lộ thông tin: Bằng cách thay đổi các quyền truy cập hoặc cấu hình, kẻ tấn công có thể tiết lộ thông tin nhạy cảm cho bên ngoài hoặc các đối tượng không được phép truy cập.
Mối nguy hiểm từ ác công cụ như Code Plugin trong chat:
Nếu code plugin có quyền thay đổi cấu hình bảo mật hoặc quyền truy cập vào các tài nguyên, kẻ tấn công có thể khai thác điều này để tăng quyền hoặc truy cập trái phép vào các dịch vụ hoặc tài nguyên quan trọng.
Ví dụ, kẻ tấn công có thể thay đổi các cài đặt xác thực (như mật khẩu hoặc khóa API), khiến các tài nguyên hệ thống có thể bị truy cập bởi người không có quyền hoặc bị rò rỉ ra ngoài.
Một cuộc tấn công thực tế đã được ghi nhận và mô tả trong plugin ChatGPT "Chat with Code", nơi việc truy cập một trang web có chứa payload prompt injection đã thay đổi cài đặt quyền truy cập của các repo GitHub, cụ thể là thay đổi các repo riêng tư thành công khai. Kết quả là, các tấn công này có thể khiến dữ liệu nhạy cảm bị rò rỉ, ví dụ như mã nguồn trong các kho GitHub riêng tư.
Phản ứng của OpenAI:
OpenAI đã gỡ bỏ plugin "Chat with Code" sau khi phát hiện sự cố này.
Sau đó, OpenAI ngừng hỗ trợ plugin hoàn toàn và thay thế chúng bằng “AI Actions”.
Tuy nhiên, AI Actions vẫn đối mặt với những thử thách tương tự như các plugin trước đó, đặc biệt là việc quản lý quyền truy cập và đảm bảo xác nhận từ người dùng trước khi thực hiện các hành động quan trọng.
Biện pháp giảm thiểu trong AI Actions:
- Những người tạo ra AI Actions có thể xác định một cờ (flag) gọi là
x-is-consequentialkhi định nghĩa các hành động. Cờ này yêu cầu xác nhận từ người dùng trước khi thực hiện hành động, nhằm đảm bảo rằng người dùng không bị tấn công hoặc thao túng mà không nhận thức được.

Trường hợp 7: SpAIware - Tấn công lưu trữ bộ nhớ (Memory Persistent Attacks)
SpAIware (viết tắt của "Spyware AI") là một dạng tấn công tiềm ẩn có thể xảy ra trong các hệ thống AI, nơi kẻ tấn công tận dụng khả năng lưu trữ dữ liệu trong bộ nhớ của hệ thống AI để duy trì quyền truy cập và kiểm soát. Các tấn công bộ nhớ bền vững (persistent memory attacks) có thể gây ra các mối nguy hiểm nghiêm trọng, vì chúng cho phép kẻ tấn công duy trì sự kiểm soát lâu dài mà không bị phát hiện.
Cách thức hoạt động của SpAIware:
Lợi dụng bộ nhớ AI: Kẻ tấn công có thể tiêm mã độc hoặc dữ liệu độc hại vào bộ nhớ của AI trong quá trình xử lý, đặc biệt là khi AI tiếp tục hoạt động trong thời gian dài hoặc khi AI có khả năng ghi nhớ thông tin qua nhiều phiên trò chuyện.
Bảo mật bộ nhớ: Các AI hiện đại, đặc biệt là những hệ thống có khả năng nhớ dữ liệu qua nhiều phiên làm việc (ví dụ, các mô hình học sâu), có thể bị tấn công khi thông tin quan trọng hoặc mã độc được lưu trữ trong bộ nhớ của chúng. Kẻ tấn công có thể lợi dụng điều này để duy trì quyền truy cập vào hệ thống mà không cần phải tái xâm nhập, dẫn đến mất kiểm soát hệ thống hoặc lộ thông tin nhạy cảm.
Khai thác và duy trì kiểm soát: Khi bộ nhớ bị tấn công và dữ liệu độc hại được ghi lại, kẻ tấn công có thể duy trì sự kiểm soát đối với AI trong một khoảng thời gian dài mà không bị phát hiện, ngay cả khi hệ thống khởi động lại hoặc thực hiện các cập nhật.
Vào tháng 12 năm 2023, đã phát hiện rằng biện pháp sửa lỗi của OpenAI đối với việc hiển thị hình ảnh markdown thông qua tính năng url_safe là không hoàn chỉnh, khiến các ứng dụng di động vẫn còn lỗ hổng.
Lỗ hổng này:
Tính năng url_safe được thiết kế để ngăn chặn các URL độc hại được hiển thị dưới dạng hình ảnh trong nội dung markdown, nhằm ngăn các cuộc tấn công như rò rỉ dữ liệu hoặc lừa đảo (phishing).
Tuy nhiên, biện pháp sửa lỗi này không được áp dụng đầy đủ trên các ứng dụng di động, có nghĩa là người dùng truy cập qua các thiết bị di động vẫn bị tấn công bởi các lỗ hổng hình ảnh.
Tác động:
Ứng dụng di động vẫn có thể bị tấn công thông qua nội dung hình ảnh độc hại được chèn vào qua markdown, cho phép kẻ tấn công lấy cắp dữ liệu hoặc chiếm quyền điều khiển tài khoản người dùng.
Việc sửa lỗi không hoàn chỉnh này tiếp tục tạo ra rủi ro bị khai thác trên nền tảng, đặc biệt đối với người dùng chủ yếu sử dụng các thiết bị di động.
Các biện pháp đã thực hiện:
Sau khi phát hiện vấn đề, OpenAI cần xem xét lại giải pháp sửa lỗi và đảm bảo rằng tất cả các nền tảng, bao gồm cả ứng dụng di động, đều được bảo vệ với một bản vá toàn diện.
Cần thực hiện kiểm tra bảo mật chặt chẽ hơn trên tất cả các nền tảng để đảm bảo rằng các lỗ hổng tương tự không bị bỏ sót trong tương lai.
Sự cố này nhấn mạnh tầm quan trọng của việc kiểm tra bảo mật toàn diện trên nhiều nền tảng và đảm bảo mọi bản sửa lỗi được triển khai đầy đủ trên tất cả các loại thiết bị (máy tính để bàn, di động, v.v.).
Vào tháng 5 năm 2024, OpenAI đã giới thiệu tính năng bộ nhớ bền vững (persistent memory), cho phép ChatGPT ghi nhớ thông tin về người dùng trong bộ nhớ dài hạn. Điều này có nghĩa là trong các cuộc trò chuyện sau, các ký ức sẽ được đưa vào ngữ cảnh prompt, và ChatGPT có thể tham chiếu lại những thông tin này trong cuộc trò chuyện.
Tuy nhiên, khi OpenAI phát hành ứng dụng macOS desktop vào năm 2024, tính năng url_safe để ngăn chặn rò rỉ dữ liệu vẫn chưa được triển khai. Điều này tạo ra một lỗ hổng bảo mật có thể bị khai thác.
Khám phá trong nghiên cứu:
Trong quá trình nghiên cứu, đã phát hiện rằng công cụ bộ nhớ có thể bị kích hoạt thông qua tiêm lệnh (prompt injection) từ các trang web, tài liệu, hoặc hình ảnh. Điều này có thể tạo ra phần mềm gián điệp (spyware), nơi các lệnh độc hại có thể được duy trì trong bộ nhớ và tiếp tục, lặng lẽ rò rỉ tất cả các cuộc trò chuyện của người dùng trong khi họ tương tác với ChatGPT.
Tác động của lỗ hổng này:
Spyware có thể lặng lẽ thu thập thông tin từ tất cả các cuộc trò chuyện của người dùng mà không bị phát hiện, đảm bảo rằng thông tin nhạy cảm có thể bị rò rỉ liên tục.
Các cuộc trò chuyện có thể bị xâm nhập mà không có sự kiểm soát hoặc đồng ý của người dùng, khiến thông tin cá nhân và các cuộc trao đổi quan trọng trở nên dễ bị tổn thương.
Biện pháp giảm thiểu:
Áp dụng tính năng
url_safeđầy đủ trên tất cả các nền tảng, bao gồm cả ứng dụng macOS, để ngăn chặn rò rỉ dữ liệu qua các URL độc hại.Giới hạn khả năng truy cập và sửa đổi bộ nhớ của ChatGPT, đảm bảo rằng prompt injection từ các nguồn không đáng tin cậy sẽ không ảnh hưởng đến bộ nhớ hoặc các cuộc trò chuyện trong tương lai.
Giám sát và phát hiện bất thường trong bộ nhớ ChatGPT để phát hiện các hành vi lạ hoặc không xác định, chẳng hạn như việc xuất hiện của các lệnh độc hại hoặc thông tin bị rò rỉ.
Cung cấp thông báo rõ ràng và quyền kiểm soát cho người dùng về cách ChatGPT sử dụng bộ nhớ và dữ liệu lưu trữ.
Với sự ra đời của bộ nhớ bền vững, việc bảo vệ dữ liệu người dùng trở nên càng quan trọng hơn bao giờ hết. Những mối đe dọa từ prompt injection và phần mềm gián điệp cần được chú trọng để bảo vệ quyền riêng tư và bảo mật cho người sử dụng.
Hơn nữa, như đã được trình bày trong buổi talk tại Black Hat Europe, có thể xây dựng một hệ thống Command & Control hoàn chỉnh, nơi hệ thống này sẽ liên tục kết nối với một máy chủ trung tâm để nhận các hướng dẫn mới bằng cách xâm nhập bộ nhớ của một người dùng ChatGPT — tất cả chỉ dựa vào tiêm lệnh (prompt injection).
Chi tiết về tấn công:
Xâm nhập bộ nhớ: Kẻ tấn công có thể prompt injection độc hại vào bộ nhớ của ChatGPT, khiến hệ thống ghi nhớ các lệnh này và tiếp tục thực thi chúng trong các phiên trò chuyện sau.
Command & Control (C&C): Sau khi bộ nhớ bị xâm nhập, hệ thống có thể gửi và nhận lệnh từ một máy chủ C&C. Điều này cho phép kẻ tấn công quản lý và điều khiển ChatGPT từ xa, sử dụng nó để thực hiện các hành động hoặc thu thập dữ liệu mà không bị phát hiện.
Liên tục lấy lệnh mới: Hệ thống sẽ gửi yêu cầu tới máy chủ trung tâm để nhận các lệnh mới, cho phép kẻ tấn công duy trì quyền kiểm soát liên tục mà không cần phải can thiệp trực tiếp vào từng cuộc trò chuyện.
Mối nguy hiểm từ tấn công này:
Tự động hóa tấn công: Một khi bộ nhớ của ChatGPT bị xâm nhập, hệ thống có thể tự động thu thập dữ liệu, gửi thông tin nhạy cảm hoặc thực thi các lệnh độc hại mà người dùng không nhận thức được.
Khả năng duy trì quyền kiểm soát: Kẻ tấn công có thể duy trì quyền kiểm soát trong thời gian dài mà không bị phát hiện, vì bộ nhớ của ChatGPT sẽ lưu trữ lệnh và thực thi chúng tự động.
Lây lan dữ liệu và mã độc: Nếu tấn công này xảy ra trên một quy mô lớn, nó có thể dẫn đến việc lây lan mã độc qua nhiều hệ thống và rò rỉ dữ liệu nhạy cảm từ nhiều người dùng.
Biện pháp bảo vệ:
Cải thiện kiểm tra an ninh: Các hệ thống cần phải kiểm tra chặt chẽ dữ liệu đầu vào và bộ nhớ của ChatGPT để phát hiện prompt injection độc hại.
Giới hạn quyền truy cập vào bộ nhớ: Bộ nhớ cần phải được bảo vệ chặt chẽ, và có cơ chế để xóa bỏ hoặc kiểm tra bộ nhớ sau mỗi phiên làm việc để ngăn chặn việc lưu trữ các lệnh độc hại.
Quản lý quyền kiểm soát: Người dùng nên có khả năng quản lý và theo dõi các lệnh được thực thi trong cuộc trò chuyện của họ để ngăn chặn sự lạm dụng.
Xác minh dữ liệu và yêu cầu bảo mật: Mỗi lệnh và yêu cầu kết nối từ ChatGPT đến các máy chủ bên ngoài cần được xác minh và kiểm tra bảo mật để ngăn chặn lệnh không mong muốn hoặc độc hại.
Tấn công kiểu này cho thấy sự nguy hiểm tiềm ẩn khi các hệ thống AI như ChatGPT có thể bị xâm nhập thông qua các lỗ hổng bảo mật nhỏ như prompt injection. Việc bảo vệ hệ thống không chỉ dừng lại ở kiểm tra đầu vào, mà còn ở cách quản lý và bảo vệ bộ nhớ của AI trong suốt thời gian hoạt động.
Trường hợp 8: ZombAIs
Cuối cùng, một ví dụ về tấn công đã chỉ ra cách một payload tiêm lệnh (prompt injection) đơn giản trên một trang web có thể xâm nhập và kiểm soát Claude Computer Use:

Mô tả cuộc tấn công:
Prompt injection qua trang web: Kẻ tấn công tạo ra một trang web chứa một đoạn mã HTML yêu cầu Claude (hoặc một AI tương tự) tải xuống một tệp từ một URL độc hại, sau đó yêu cầu AI chạy tệp đó.
Kết quả của cuộc tấn công: Khi Claude thực thi lệnh này, nó sẽ tải xuống và chạy phần mềm độc hại mà không kiểm tra an toàn của tệp.
Biến máy tính của người dùng thành botnet zombie: Phần mềm độc hại có thể biến máy tính người dùng thành một botnet zombie, nơi máy tính này sẽ bị điều khiển từ xa để thực hiện các hành động mà kẻ tấn công yêu cầu, chẳng hạn như tham gia các cuộc tấn công từ chối dịch vụ (DDoS) hoặc rò rỉ dữ liệu.
Tác động của cuộc tấn công:
Máy tính của người dùng bị chiếm quyền kiểm soát: Khi máy tính người dùng bị xâm nhập, nó có thể trở thành một phần của mạng botnet, bị điều khiển từ xa mà người dùng không hề hay biết.
Lây lan phần mềm độc hại: Tấn công này có thể lây lan phần mềm độc hại sang các hệ thống khác thông qua mạng, dẫn đến thiệt hại về bảo mật hoặc mất mát dữ liệu.
Mất quyền kiểm soát của người dùng: Người dùng không nhận thức được rằng máy tính của họ bị điều khiển từ xa, gây ảnh hưởng đến sự riêng tư và bảo mật của họ.
Biện pháp giảm thiểu mất mát tính bảo mật (Confidentiality)
Để bảo vệ tính bảo mật của người dùng và ngăn ngừa các vi phạm dữ liệu, các chiến lược giảm thiểu sau đây được khuyến nghị:
Không đưa dữ liệu nhạy cảm vào trong hệ thống prompt:
- Tránh việc đưa thông tin cá nhân, nhạy cảm hoặc bảo mật vào trong prompt của hệ thống xử lý AI. Điều này giúp giảm thiểu nguy cơ rò rỉ dữ liệu không mong muốn.
Tránh việc hiển thị liên kết hoặc hình ảnh từ các miền không tin cậy:
- Không tự động hiển thị hoặc tải tài nguyên (như liên kết hoặc hình ảnh) từ các miền không đáng tin cậy hoặc không rõ nguồn gốc. Điều này ngăn chặn các cuộc tấn công có thể lợi dụng hệ thống AI để lấy hoặc thực thi nội dung độc hại.
Tránh tự động kích hoạt các công cụ cho các hoạt động nhạy cảm:
- Các hoạt động nhạy cảm như truy xuất dữ liệu, kích hoạt công cụ có liên quan đến hành động bảo mật hoặc có thể dẫn đến việc rò rỉ dữ liệu không nên được thực hiện tự động. Điều này đảm bảo rằng các hệ thống AI không vô tình rò rỉ dữ liệu hoặc thực hiện các thao tác có hại mà không có sự đồng ý của người dùng.
Nếu có kích hoạt công cụ, cần hiển thị rõ cho người dùng về hành động sẽ được thực hiện và dữ liệu nào sẽ liên quan (trước khi thực hiện hành động):
- Khi kích hoạt công cụ hoặc tài nguyên bên ngoài, hệ thống cần cung cấp thông tin rõ ràng và minh bạch về hành động đang được thực hiện. Người dùng phải được thông báo về dữ liệu sẽ được truy cập và kết quả dự kiến trước khi tiến hành thao tác.
Sử dụng Chính sách bảo mật nội dung (Content Security Policies - CSP) để ngăn chặn việc hiển thị tài nguyên từ các miền không tin cậy:
- Triển khai Content Security Policies (CSP) để đảm bảo rằng hệ thống chỉ tải tài nguyên (như hình ảnh, mã script, hoặc iframe) từ các nguồn tin cậy. Điều này giúp ngăn các miền bên ngoài tiêm nhiễm nội dung độc hại vào hệ thống.
Không tự động giải mã liên kết (unfurl hyperlinks):
- Liên kết trong các tin nhắn không nên được tự động giải mã hoặc mở rộng (ví dụ: hiển thị bản xem trước nội dung phía sau liên kết) vì điều này có thể tiết lộ thông tin nhạy cảm hoặc độc hại. Liên kết chỉ nên được mở rộng sau khi người dùng xác nhận hoặc yêu cầu.
Mã hóa đầu ra theo ngữ cảnh để ngăn ngừa các lỗ hổng bảo mật ứng dụng (như XSS):
- Mã hóa đầu ra cần được sử dụng để ngăn ngừa các lỗ hổng Cross-Site Scripting (XSS) hoặc các cuộc tấn công tương tự. Điều này đảm bảo rằng dữ liệu được hiển thị từ các hệ thống AI được mã hóa an toàn và không thể bị khai thác bởi các kẻ tấn công tiêm nhiễm mã độc.
Đánh giá bảo mật và kiểm thử xâm nhập:
- Thực hiện đánh giá bảo mật định kỳ và kiểm thử xâm nhập để xác định các lỗ hổng và giảm thiểu các rủi ro. Phương pháp chủ động này giúp đảm bảo rằng các lỗ hổng bảo mật tiềm ẩn được giải quyết trước khi chúng có thể bị khai thác.
Bằng cách làm theo các khuyến nghị này, hệ thống AI có thể duy trì bảo mật cao hơn, giảm thiểu đáng kể nguy cơ rò rỉ dữ liệu, vi phạm quyền riêng tư, và các mối đe dọa bảo mật khác có thể làm lộ thông tin nhạy cảm.





![[ZVE-2025-3566] Stored XSS to RCE in Manage Engine OpManager](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1753930975579%2Fb835c2ae-2b5b-425e-9210-09bb506d46c1.png&w=3840&q=75)
