ChatGPT for Google Sheets Exfiltrates Workbooks
TL;DR Highlight
Google Sheets용 ChatGPT 확장 프로그램이 간접 프롬프트 인젝션 공격에 취약해, 단 하나의 시트에 숨겨진 악성 명령만으로 계정 내 워크북 전체가 외부로 유출될 수 있다는 보안 연구 결과가 공개됐다.
Who Should Read
Google Sheets나 기타 스프레드시트 도구에 AI 확장 프로그램을 연동해서 사용하는 개발자나 데이터 분석가, 그리고 AI 기반 플러그인/에이전트를 기업 내부 시스템에 도입 중인 보안 담당자.
Core Mechanics
- OpenAI가 출시한 Google Sheets용 ChatGPT 확장 프로그램은 출시 한 달도 안 돼 18만 5천 건 이상 다운로드됐는데, 여기서 심각한 데이터 유출 취약점이 발견됐다.
- 공격 방식은 '간접 프롬프트 인젝션(Indirect Prompt Injection)'으로, 외부에서 가져온 시트나 ChatGPT 커넥터 데이터 안에 흰색 글씨로 악성 명령을 숨겨두면, 사용자가 그 데이터를 ChatGPT에게 처리해달라고 요청하는 순간 공격이 트리거된다.
- 이 공격 하나로 동시에 여러 가지 피해가 발생한다: 계정 내 여러 워크북 데이터 외부 서버로 유출, 가짜 ChatGPT UI처럼 보이는 피싱 팝업 표시, 공격자가 제어하는 챗봇으로 사이드바 교체, 워크북 내용 무단 수정 등이 한꺼번에 일어날 수 있다.
- ChatGPT for Google Sheets에는 'Apply edits automatically(자동 편집 적용)' 설정이 있어서 사용자가 이를 비활성화하면 에이전트 작업 전 승인을 요구하도록 되어 있지만, 이 공격은 해당 설정을 꺼놔도 우회하여 성공한다.
- 악성 스크립트는 최초 유출한 재무 모델 데이터 안에서 다른 스프레드시트 링크를 찾아내 연쇄적으로 추가 워크북을 유출한다. 실제 테스트에서 총 12개의 워크북이 연속으로 탈취됐다.
- 사이드바의 'stop' 버튼을 눌러도 이미 실행 중인 스크립트는 멈추지 않는다. 즉 사용자가 수동으로 중단을 시도해도 이미 시작된 데이터 유출은 계속 진행된다.
- 피싱 오버레이 공격도 가능한데, 공격자가 ChatGPT 확장 사이드바 위에 가짜 UI를 덮어씌워 사용자의 프롬프트 입력 내용을 수집하거나 정상 확장처럼 행동하면서 악성 작업을 병행할 수 있다.
- 이 취약점은 OpenAI에 책임 있는 공개(Responsible Disclosure) 절차로 신고했지만, 자동 응답 외에 아무런 후속 커뮤니케이션을 받지 못했고 수정 조치도 없어서 공개 발표했다고 연구팀이 밝혔다.
Evidence
- AI 도구가 외부 스크립트를 실행할 수 있도록 허용하는 구조 자체가 문제라는 의견이 많았다. 예를 들어 Codex도 PDF를 처리하라고 하면 PDF 리더 실행 바이너리를 PC에 설치하는데, 이게 검증된 파일인지 바이러스인지 아무도 신경 쓰지 않는다는 경험담이 공유됐다.
- 모든 AI 도구는 로컬에서 실행되어야 하고 컨테이너화(WASI 등)가 필수라는 주장이 나왔다. 한 개발자는 로컬 LLM 워크플로우용 WASI 컨테이너화 프로젝트를 진행 중인데, Anthropic과 OpenAI가 이런 공격 벡터에 더 진지하게 대응하지 않는 것이 놀랍다고 밝혔다.
- OpenAI의 무응답에 대해 커뮤니티 반응은 싸늘했다. '자동 응답 하나만 보내고 아무 조치도 없다는 게 귀엽지 않다(not cute)'는 표현으로 비판이 나왔고, 보안 연구자와 대형 AI 기업 사이의 소통 부재 문제를 지적하는 분위기였다.
- AI를 기업 내 민감한 인프라에 제대로 된 애플리케이션 레이어 없이 그냥 꽂아 쓰는 건 처음부터 작동할 수 없는 방식이라는 의견이 있었다. 'LLM을 기밀·중요 인프라에 무분별하게 연결하면 안 된다'는 원칙적인 비판이 공감을 얻었다.
- 이 연구를 공개한 PromptArmor가 보안 문제를 발견하고 솔루션도 판매하는 비즈니스 모델 아니냐는 질문도 있었다. 이는 연구의 중립성에 대한 의구심이었지만, 취약점 내용 자체의 심각성은 부정하는 댓글은 없었다.
How to Apply
- 외부 데이터(CSV 임포트, 외부 API 연동, 공유 시트 등)를 AI 확장 프로그램과 함께 처리하는 환경이라면, 해당 데이터를 AI에 넘기기 전에 숨겨진 텍스트(흰색 글씨, 제로폭 문자 등)나 비정상적인 텍스트 패턴을 사전에 필터링하는 로직을 추가해야 한다.
- Google Sheets, Notion, Slack 등 협업 도구에 AI 플러그인을 조직 내 도입할 때는, 해당 플러그인이 어떤 권한(스크립트 실행, 외부 URL 호출 등)을 가지는지 명확히 파악하고, 외부 네트워크 호출을 차단하거나 허용 도메인을 제한하는 정책을 먼저 설정해야 한다.
- AI 에이전트가 스크립트 실행 권한을 가진 환경을 구성할 때는, WASI나 Docker 같은 컨테이너 기술로 샌드박스를 만들어 실행 범위를 격리해야 한다. 이렇게 하면 악성 스크립트가 실행되더라도 외부 서버로의 데이터 전송이나 다른 파일 접근을 차단할 수 있다.
- 이 글에서 언급된 PromptArmor의 다른 사례들(GitHub Copilot CLI, Slack AI, Snowflake Cortex, Notion AI 등)도 비슷한 패턴의 공격을 받은 사례이므로, 현재 사용 중인 AI 통합 도구 목록을 점검하고 각각의 권한 범위와 간접 프롬프트 인젝션 대응 여부를 확인해볼 필요가 있다.
Terminology
Related Papers
Unifying Temporal and Structural Credit Assignment in LLM-Based Multi-Agent Prompt Optimization
여러 AI 에이전트가 협력할 때 '어느 라운드의 어느 에이전트'가 실패했는지 정확히 짚어내서 그 프롬프트만 고치는 최적화 프레임워크
Show HN: Ktx – Open-source executable context layer for data agents
AI 에이전트가 회사 데이터 웨어하우스를 정확하게 쿼리할 수 있도록 시맨틱 레이어, 메모리, 비즈니스 지식을 자동으로 구축해주는 오픈소스 도구다. 기존 에이전트가 매번 웨어하우스를 재탐색하거나 잘못된 메트릭 로직을 임의로 만들어내는 문제를 해결한다.
Multi-Agent LLM System for Automated Vulnerability Discovery and Reproduction
LLM 기반 멀티 에이전트 시스템으로 C/C++ 코드의 보안 취약점을 자동으로 찾고 재현하는 FuzzingBrain V2 논문으로, AIxCC 2025 대회에서 40개 중 36개(90%) 취약점 탐지에 성공했다.
CORE: Contrastive Reflection Enables Rapid Improvements in Reasoning
성공/실패 추론 트레이스를 비교해 짧은 자연어 인사이트를 뽑아내고, 단 5개 학습 샘플로도 GRPO보다 빠르게 모델 추론 성능을 올리는 비파라메트릭 알고리즘.
Claude Code as a Daily Driver: Claude.md, Skills, Subagents, Plugins, and MCPs
Claude Code를 터미널 AI 코딩 도구로 제대로 쓰기 위한 Claude.md 설정, 서브에이전트, 플러그인, MCP 연동 실전 가이드
FinHarness: An Inline Lifecycle Safety Harness for Finance LLM Agents
금융 AI 에이전트가 실행 중간에 위험한 툴 호출을 차단하면서도 정상 승인율을 유지하는 인라인 안전 프레임워크