Bối cảnh
Blue41 giúp Bunq — ngân hàng số lớn thứ hai EU với hơn 20 triệu khách hàng — secure AI assistant chống spearphishing. Trong test, họ tìm thấy lỗ hổng indirect prompt injection cho phép một bank transfer biến assistant thành kênh delivery phishing đáng tin cậy.
Vấn đề không riêng Bunq — đây là challenge architectural cho mọi tổ chức tài chính deploy AI assistant xử lý transaction data, customer record, document, message, hoặc bất kỳ untrusted input nào.
Kiến trúc cơ bản
Banking app hiện đại tích hợp AI feature, đứng giữa user và các backend data source (transaction record, product doc, account detail, support content). Khi user hỏi “show me recent transactions”, assistant fetch record relevant và đẩy vào LLM context, model summarize.
Vấn đề security: không phải mọi context retrieve đều trust ngang nhau. Transaction description là data do bên thứ ba set. Trông giống text bình thường, nhưng khi vào context window, model có thể interpret như instruction thay vì data.
Đây là core của indirect prompt injection: malicious instruction không được user nhập, mà nằm trong data bên ngoài/retrieve mà assistant xử lý sau.
Kịch bản tấn công
PoC không cần truy cập device, malware, hay social engineering truyền thống — chỉ cần một chuyển khoản nhỏ.
Step 1. Attacker chuyển €0.02 tới target. Trong field mô tả giao dịch, attacker chèn prompt injection payload đã craft cẩn thận. Đây là hành động duy nhất attacker cần.
Step 2. Nạn nhân mở banking app và hỏi assistant câu thường, ví dụ “show me my recent transactions”. Phần còn lại được AI assistant tự động thực thi.
Để trả lời, assistant retrieve transaction data (gồm transfer của attacker), đẩy vào LLM context. LLM xử lý injected instruction trong mô tả giao dịch. Trong demo controlled, assistant bị manipulate thành launch spearphishing tới user, presented dưới dạng reauthentication request hợp lệ từ ngân hàng.
Message kết quả xuất hiện trong chính app ngân hàng, từ chính AI assistant của ngân hàng. Có thể reference detail giao dịch thật và thông tin user — phishing attack credibility cực cao.
Vì sao quan trọng với fintech
- Injection surface phổ biến: transaction description, payment reference, merchant metadata, support message, document upload, email, CRM note — đều là field có thể được retrieve. Phần lớn không bao giờ được design như trust boundary cho instruction.
- Delivery mechanism rẻ và đáng tin: một transfer nhỏ đặt được text attacker-controlled vào lịch sử giao dịch nạn nhân. Payload sau đó delivery qua kênh trusted nhất — chính app ngân hàng.
- Assistant có privileged context: không như phishing email, banking assistant truy cập được account context thật. Manipulated response personal hơn, timely hơn, believable hơn.
- Risk tăng theo capability: read-only assistant đã có thể mislead user. Assistant có quyền gọi tool, workflow, hay thực hiện account operation tạo risk surface lớn hơn rất nhiều.
Vì sao guardrail tĩnh không đủ
Response tự nhiên là thêm input filter, prompt injection classifier, content moderation rule. Các control này giúp được, nhưng không đủ một mình.
Bunq đã có guardrail. Vấn đề tồn tại vì malicious intent không rõ ràng khi nhìn riêng mô tả giao dịch. Payload không cần nói “ignore previous instructions” hay jailbreak pattern cổ điển — được craft để blend vào transaction data, chỉ trở nên nguy hiểm khi assistant retrieve, đẩy vào context, sinh response từ đó.
Limit của static text classification: rủi ro không chỉ ở text. Rủi ro emerge từ interaction giữa untrusted data + retrieval logic + model behavior + application context + output/action available.
Bốn lớp mitigation thực tế
1. Minimize context. Đừng pass field vào assistant trừ khi cần cho user task. Nếu transaction description không cần để trả lời câu hỏi, không nên vào model context by default.
2. Treat retrieved data as untrusted. Transaction description, customer message, document, email, API response — handle như data, không phải instruction. Architecture assistant phải preserve distinction này explicitly.
3. Constrain sensitive output và action. Assistant không nên tự sinh link, request credential, initiate sensitive workflow, hay call high-impact tool mà không có additional control.
4. Monitor runtime behavior. Kể cả preventive control tốt, novel attack vẫn xuất hiện. Security team cần visibility vào: assistant retrieve gì, sinh gì, dùng tool nào, behavior có match intended profile hay không.
Ý nghĩa cho dev xây AI assistant
- Mọi untrusted data source vào context của assistant trở thành phần của attack surface.
- Prompt injection classifier không cover được payload được craft blend vào data domain-specific.
- Sandboxing prompt-isolation (model riêng để summarize user-controlled text, model khác để decide action) là pattern đáng đầu tư từ đầu.
- Defense-in-depth: input filter + output constraint + least-privilege tool access + runtime monitoring. Không có single control nào fix indirect prompt injection.