Skip to main content

Command Palette

Search for a command to run...

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

Updated
5 min read
Trust No AI: Prompt Injection Along the CIA Security Triad - Part 3

Mặc dù vấn đề mất khả năng sẵn sàng (Availability) thường ít được thảo luận, đặc biệt trong bối cảnh tiêm nhiễm prompt injection, nhưng đây là một yếu tố quan trọng không thể bỏ qua trong việc đảm bảo bảo mật và hiệu quả của hệ thống AI, đặc biệt là khi các mô hình ngôn ngữ lớn (LLM) được triển khai vào các ứng dụng thực tế.

Mất khả năng sẵn sàng trong các hệ thống AI

Khi hệ thống AI bị tấn công hoặc bị xâm nhập thông qua các phương thức như prompt injection hoặc các lỗ hổng bảo mật khác, một trong những tác động tiêu cực mà người dùng có thể gặp phải là mất khả năng sẵn sàng hệ thống. Điều này có thể xảy ra nếu AI trở nên không phản hồi, hoạt động chậm hoặc không thể thực hiện các tác vụ quan trọng như bình thường.

Một số ví dụ về mất khả năng sẵn sàng có thể bao gồm:

  • Sự cố hệ thống do các lệnh hoặc yêu cầu không hợp lệ từ phía kẻ tấn công.

  • Tấn công từ chối dịch vụ (DoS) có thể làm cho hệ thống hoặc ứng dụng AI không thể truy cập được hoặc hoạt động kém hiệu quả.

  • Lỗ hổng bảo mật gây ra sự cố hoặc mất khả năng cung cấp dịch vụ liên tục.

Các cuộc tấn công ảnh hướng đến khả năng sẵn sàng

Các cuộc tấn công có thể ảnh hưởng đến khả năng sử dụng của AI và dẫn đến một số vấn đề nghiêm trọng:

  • Prompt Injection: Một cuộc tấn công prompt injection có thể gây rối loạn hoặc thay đổi cách AI xử lý yêu cầu, khiến nó không thể cung cấp kết quả đúng đắn hoặc làm hệ thống không phản hồi đúng cách.

  • Xâm nhập vào hệ thống điều khiển: Kẻ tấn công có thể tạo ra các yêu cầu hoặc lệnh không hợp lệ để xâm nhập vào hệ thống và làm gián đoạn các quy trình, tác động đến khả năng hoạt động liên tục của hệ thống.

  • Tấn công DDoS (Tấn công từ chối dịch vụ phân tán): Một hình thức tấn công khác là DDoS, nơi kẻ tấn công tạo ra một lượng lớn yêu cầu, làm nghẽn hoặc làm quá tải hệ thống, khiến AI không thể thực hiện được các tác vụ yêu cầu.

  • Trường hợp 1: Vòng lặp vô hạn hoặc suy luận kéo dài

Kẻ tấn công có thể cố gắng tạo ra một đệ quy vô hạn bằng cách kích hoạt một công cụ, công cụ này lại trả về một prompt injection dẫn đến việc gọi lại chính công cụ đó.

Ý tưởng tấn công này đã được thử nghiệm với ChatGPT, và OpenAI đã xem xét mối đe dọa này. ChatGPT hiện chỉ cho phép tối đa 10 lần gọi trong một vòng lặp

llm-dos-loop

Tuy nhiên, đối với người dùng ChatGPT, đây không thực sự là một mối đe dọa lớn, vì:

  • ChatGPT là dịch vụ trả phí theo đăng ký, vì vậy OpenAI sẽ chịu trách nhiệm thanh toán hóa đơn.

  • Dường như có một giới hạn gọi tối đa là 10 lần trong một lượt hội thoại (tôi đã thử vài lần).

  • Cuối cùng, người dùng có thể nhấn "Dừng tạo" nếu vòng lặp vẫn tiếp tục.

Tuy nhiên,

Các ứng dụng khác có thể dễ bị tổn thương với mối đe dọa này, đặc biệt là nếu có dịch vụ tự động phía backend đang tiêu thụ dữ liệu không đáng tin cậy và gọi các công cụ.

  • Trường hợp 2: Từ chối qua (Hướng dẫn) ẩn

Một prompt injection có thể gây ra việc từ chối đơn giản để ngừng xử lý thông tin. Ví dụ, đã có một thử nghiệm cho thấy một prompt injection trong email có thể khiến Copilot từ chối việc tóm tắt email đó (đã nói ở trên).

  • Trường hợp 3: Từ chối kết quả liên tục

ChatGPT đã thêm khả năng lưu trữ trí nhớ dài hạn.
Thật không may, OpenAI đã quyết định rằng không cần có một prompt từ người dùng trong quá trình xử lý để lưu trữ trí nhớ dài hạn

Điều này có nghĩa là trong quá trình prompt injection, kẻ tấn công có thể thêm những ký ức giả mạo hoặc thậm chí có hại vào trí nhớ của ChatGPT của người dùng. Một trong những cuộc tấn công như vậy là khiến ChatGPT từ chối trả lời thêm bất kỳ câu hỏi nào nữa.

DOS prompt injection

ChatGPT Denial of Service

Các biện pháp giảm thiểu để ngăn ngừa mất tính sẵn sàng:

  • Giới hạn độ dài token và thời gian mà một truy vấn có thể thực thi.

  • Giới hạn tần suất yêu cầu mỗi người dùng hoặc IP có thể gửi.

  • Tránh việc tự động kích hoạt công cụ mà không có sự can thiệp của con người.

  • Xem xét các đệ quy khi có sự tham gia của công cụ.

  • Mã hóa đầu ra có ngữ cảnh (ví dụ: sử dụng ký hiệu caret cho mã điều khiển ANSI trong các ứng dụng CLI).

  • Hạn chế quyền truy cập vào các điểm cuối suy luận.

Cũng cần lưu ý rằng các cuộc tấn công tiêu tốn tài nguyên cao cũng sẽ gây ra chi phí bổ sung cho các nhà vận hành, điều này cũng có thể được coi là một cuộc tấn công.