Tổng quan
Gần đây OpenAI launch một AI extension dùng ChatGPT trong Google Sheets, đã có hơn 185,000 downloads chỉ trong chưa đầy một tháng. Extension cho phép user thao tác trên spreadsheet bằng cách tương tác với một AI chatbot trong sidebar, đồng thời tận dụng data từ ChatGPT connectors.
Một indirect prompt injection attack duy nhất, được trigger bởi một query benign duy nhất của user, có thể đồng thời gây ra:
- Exfiltrate nhiều workbook trên toàn account của victim
- Hiển thị phishing pop-up tương tác
- Overlay toàn bộ GPT sidebar bằng chatbot interface do attacker kiểm soát
- Edit workbook do attacker điều khiển
Attack xảy ra khi bất kỳ untrusted data source nào (ví dụ: sheet được import, hoặc ChatGPT connector) manipulate ChatGPT để chạy một external script do attacker kiểm soát. Script này chạy với permission mà user đã cấp cho ChatGPT for Google Sheets extension.
Lỗ hổng đã được PromptArmor disclose responsibly cho OpenAI. Dù follow up nhiều lần, PromptArmor không nhận được phản hồi nào ngoài automated reply ban đầu. Documentation của OpenAI không mô tả các sensitive capabilities được cấp cho model (như chạy privileged scripts) hay rủi ro model bị manipulate qua indirect prompt injection — chỉ tập trung vào limitation chức năng và data handling.
Attack Chain
Bước 1: User làm việc trên financial model nội bộ
User GPT for Sheets đang xây một financial model.
Bước 2: User import external data set
User import một external dataset để enhance model của mình.
Bước 3: External sheet chứa prompt injection ẩn dưới white text
Sheet bên ngoài có prompt injection ẩn — text white trên nền white, mắt thường không thấy.
Bước 4: User hỏi ChatGPT for Google Sheets giúp tích hợp data
User yêu cầu extension giúp merge data từ sheet đã import vào financial model.
Bước 5: Injection manipulate ChatGPT chạy external script
Quan trọng: ChatGPT for Google Sheets có setting tên là ‘Apply edits automatically’ xác định khi nào cần human approval trước khi một agentic action hoàn tất. Tuy nhiên, attack này thành công ngay cả khi user đã tắt automatic edits.
Bước 6: External script exfiltrate financial model
Log server của attacker hiện rõ financial model của user bị exfiltrate.
Bước 7: Script tự lan sang workbook khác
Script bóc ra các link tới workbook khác từ data đã steal, exfiltrate workbook mới phát hiện, và tiếp tục với tất cả workbook nó tìm thấy. Trong demo, internal financial model có link tới một spreadsheet khác về budgeting → script identify URL, exfiltrate workbook tiếp theo, tiếp tục process — cuối cùng exfiltrate 12 workbook tổng cộng.
Quan trọng: Bấm nút ‘Stop’ trong ChatGPT sidebar không dừng script đã bắt đầu chạy.
Phishing Overlay Attacks
Ngoài data exfiltration, cùng attacker-controlled script còn cho phép hai variant phishing overlay:
Variant 1: Sidebar overlay
Một sidebar được mở chồng lên ChatGPT for Google Sheets extension với một site do attacker kiểm soát, cho phép attacker giả mạo extension. Malicious sidebar có thể chạy script edit sheet như ChatGPT thật, vừa hoạt động bình thường vừa làm hành vi malicious:
- Harvest tất cả prompt của user
- Cung cấp chatbot misaligned để user tương tác
- Thuyết phục user ‘reconnect’ connector để có thêm app access
- Hiển thị phishing UI để steal credential OpenAI
Variant 2: Pop-up phishing modal
Một pop-up modal mở ra render website do attacker kiểm soát để phish credential.
Cách kiểm soát
Organization có thể dùng config sau để kiểm soát access:
Workspace settings → Permissions & roles → ChatGPT for Excel and Google Sheets
Timeline disclosure
- 08/05/2026: PromptArmor disclose tới OpenAI qua email
- 08/05/2026: OpenAI gửi automated reply
- 08/05/2026: PromptArmor confirm preference email
- 12/05/2026: PromptArmor follow up
- 18/05/2026: PromptArmor follow up
- 27/05/2026: Public disclosure
Dev nên quan tâm vì
Đây không chỉ là bug của OpenAI — đây là một class of vulnerability nguyên cho mọi LLM agent có quyền execute script + truy cập user data qua connector. Khi user export data quyền cho agent, mọi untrusted content (sheet import, web content, email, attachment) đều là attack vector cho prompt injection. Bài học cho team build agent product:
- Treat external data as untrusted input: kể cả khi user explicitly import, content vẫn cần sanitize và escape
- Hard-coded approval gate: không tin tưởng user setting; tool có blast radius cao (script exec, file delete, exfil ngoài) phải có approval level riêng không thể bypass qua prompt
- Stop button thật sự stop: nếu script đã trigger, phải có kill switch hard cancel — không phải chỉ flag dừng generation
- Scope leakage: agent đang work trên một workbook không có lý do gì biết link tới workbook khác — context isolation per-resource
Nếu org bạn cho phép ChatGPT extension trong Google Workspace, vào Permissions & roles tắt ngay cho đến khi OpenAI phản hồi.