MiddleAI Agent

Prompt injection là gì, khác nhau thế nào giữa tấn công trực tiếp và gián tiếp, và bạn phòng chống ra sao?

Người phỏng vấn muốn biết bạn có nhận ra mô hình không phân biệt được chỉ dẫn của bạn với văn bản người khác viết, và biết đặt biện pháp bảo vệ ở nơi đáng tin hơn là lời dặn trong prompt.

Prompt injection là khi văn bản do người khác kiểm soát lọt vào ngữ cảnh và làm mô hình hành xử ngoài ý muốn. Tấn công trực tiếp là khi chính tin nhắn của người dùng làm việc đó, ví dụ "bỏ qua mọi hướng dẫn trước đó". Tấn công gián tiếp là khi nội dung nằm trong dữ liệu mà agent đọc, như một ô ghi chú, một trang web hay một tài liệu, và người dùng thậm chí không viết nó. OWASP xếp đây là rủi ro đầu tiên của ứng dụng dùng mô hình ngôn ngữ, và ghi rằng chưa rõ có cách ngăn chặn tuyệt đối.

Vì vậy biện pháp nên đặt trong code: quyền tối thiểu (agent không có công cụ làm việc nhạy cảm như hoàn tiền, chỉ chuyển cho người), kiểm tra quyền trong từng công cụ bằng danh tính do ứng dụng xác thực chứ không do mô hình khai, chỉ đưa vào ngữ cảnh những trường cần thiết, lọc đầu ra, và cho người duyệt các việc rủi ro cao. Lời dặn trong system prompt và việc đánh dấu nội dung không đáng tin vẫn nên làm nhưng chỉ là lớp bổ sung.

Cần nói thêm: bộ lọc đầu ra bằng biểu thức chính quy luôn có thể bị lách bằng cách diễn đạt khác, và có thể chặn nhầm câu đúng, nên phải thử cả câu đúng lẫn câu sai.

Điểm cộng: nhắc việc biến các tấn công đã biết thành bộ test chạy lại được, và phân biệt rằng test với mô hình giả chỉ chứng minh code xung quanh, không chứng minh hành vi của mô hình thật.