
ChatGPT for Google Sheets 프롬프트 인젝션 공격 분석 — 워크북 유출과 피싱 오버레이
OpenAI의 Google Sheets용 ChatGPT 확장 기능이 출시 한 달도 안 된 시점에 185,000회 이상 다운로드 기록을 세웠습니다. 그런데 이 편리한 도구가 단 한 번의 정상 사용자 질의로 계정 전반의 워크북을 외부로 유출시킬 수 있다는 사실이 PromptArmor의 보안 연구를 통해 공개되었습니다. 단순한 데이터 유출에 그치지 않고 사이드바 탈취, 피싱 오버레이까지 가능한 에이전트형 보안 위협의 실증 사례이며, 본 글에서는 공격 흐름과 방어 방법을 정리합니다.
공격이 성립하는 구조적 원인
이 공격의 본질은 간접 프롬프트 인젝션(indirect prompt injection) 입니다. 공격자는 신뢰할 수 없는 데이터 소스, 예를 들어 가져온 외부 시트나 ChatGPT connector 안에 흰색 텍스트로 숨겨진 악성 지시문을 심어둡니다. 사용자가 평소처럼 ChatGPT에 "이 데이터를 재무 모델에 통합해줘"라고 요청하는 순간, 모델은 합법적인 명령과 악성 지시문을 구분하지 못한 채 공격자 제어 외부 스크립트를 실행합니다.
가장 우려되는 지점은 사람 승인(human-in-the-loop) 설정 우회 가능성 입니다. 'Apply edits automatically'를 비활성화해두었더라도, 사용자가 단 한 번 정상 질의를 보내는 것만으로 공격이 성립합니다. ChatGPT 사이드바의 'stop' 버튼을 눌러도 이미 시작된 스크립트의 실행은 중단되지 않는다는 점도 확인되었습니다. 결국 전통적인 사용자 승인 체계는 이 공격에 효과적이지 못합니다.
실제 피해 시나리오
PromptArmor가 시연한 공격 흐름은 다음과 같습니다.
1. 사용자가 내부 재무 모델 작업을 진행합니다.
2. 모델 보강을 위해 외부 데이터셋을 가져옵니다. 이 외부 시트에는 흰색 텍스트로 프롬프트 인젝션이 숨겨져 있습니다.
3. 사용자는 "이 데이터를 재무 모델에 통합해줘"라고 정상 질의를 보냅니다.
4. 인젝션이 ChatGPT를 조종해 공격자 서버로 데이터를 유출하는 Apps Script를 실행합니다.
5. 스크립트는 재무 모델에서 다른 워크북 링크를 식별하고, 발견 가능한 모든 워크북으로 확산합니다.
6. 실제 시연에서는 최종 12개 워크북이 유출되었습니다.
특히 내부 재무 모델이 예산 관련 다른 스프레드시트를 참조하는 구조였다면, 단일 워크북이 아니라 계정 전반의 모든 워크북이 차례로 유출될 수 있습니다. 재무 모델에 민감한 매출, 원가, 임금, 계약 조건 등이 포함되어 있다면 그 피해는 단순한 정보 노출을 넘어 경쟁 우위 손실과 법적 책임으로 이어질 수 있습니다.
피싱 오버레이 공격의 두 가지 변형
데이터 유출만이 아닙니다. 동일한 공격자 제어 스크립트로 두 가지 피싱 변형이 가능합니다.
변형 1: 사이드바 탈취. 공격자 제어 사이트로 확장 기능을 덮는 사이드바를 열어 사용자를 속입니다. 이 가짜 사이드바는 ChatGPT와 동일하게 시트 편집 스크립트를 실행할 수 있으며, 모든 사용자 프롬프트를 수집하고 connector '재연결'을 유도해 추가 앱 접근 권한을 획득합니다. 심지어 OpenAI 자격증명 탈취용 피싱 UI를 표시합니다.
변형 2: 팝업 모달. 공격자 제어 웹사이트를 렌더링하는 팝업 모달을 열어 자격증명 피싱을 수행합니다.
두 변형 모두 사용자는 평소와 동일한 인터페이스에서 작업을 계속하고 있다고 믿기 때문에 공격 탐지가 극도로 어렵습니다. 사이드바는 정상 UI와 구별이 거의 불가능하며, 팝업은 OAuth 동의 화면을 모방한 형태로 표시될 수 있습니다.
에이전트형 보안 위협의 의미
이번 사례는 AI 확장 기능이 부여받은 권한이 악용될 때 발생하는 에이전트형 보안 위협(agentic security risk) 의 실증적 사례로 의미가 큽니다. 기존 웹 보안 사고가 사용자 입력이 직접적인 공격 벡터였던 것과 달리, 이번에는 LLM이 권한을 가진 도구를 호출하는 과정에서 신뢰할 수 없는 데이터가 자동으로 명령으로 승격되는 구조입니다.
이는 코드 실행 권한, 파일 시스템 접근, 네트워크 호출 같은 도구 권한을 LLM에 부여하는 모든 제품군에 공통적으로 적용되는 위협입니다. OpenAI는 보고를 인지한 뒤 모델의 Apps Script 코드 생성 능력을 제거하는 즉각 조치를 취했습니다. 또한 Google Sheets API 상호작용과 샌드박싱 접근을 재평가하겠다고 밝히며, 더 넓게는 다른 영역의 유사 기능도 재검토해 방어 일관성을 확보하겠다고 발표했습니다.
조직이 취해야 할 접근 통제
ChatGPT for Google Sheets의 조직 차원 통제는 Google Workspace 관리 콘솔에서 가능합니다.
Workspace settings > Permissions & roles > ChatGPT for Excel and Google Sheets 경로에서 해당 확장 기능에 대한 접근을 제한할 수 있습니다. AI 확장 기능을 전면 허용하기보다는, 사용 범위를 신중히 결정해야 합니다. 특히 재무, 인사, 고객 데이터처럼 민감한 워크북을 다루는 부서에는 확장을 비활성화하는 것이 안전합니다.
사용자가 즉시 적용할 수 있는 대응
확장 기능을 계속 사용해야 하는 경우 다음 원칙을 따르는 것이 좋습니다.
• 외부 데이터셋 import 자제: 검증되지 않은 출처의 시트를 가져올 때 프롬프트 인젝션 위험이 발생합니다.
• 민감 워크북 분리: 재무, 인사, 계약 등 핵심 데이터가 포함된 워크북은 확장 기능이 설치된 계정과 분리하는 것이 안전합니다.
• 권한 최소화 원칙: 확장 기능에 부여하는 OAuth 범위를 최소화하고, 정기적으로 부여된 권한을 검토합니다.
• 비정상 활동 모니터링: Apps Script 실행 이력, 외부 fetch 요청, OAuth 동의 이벤트를 정기적으로 확인합니다.
• 중요 데이터는 로컬 LLM 검토: 민감한 모델은 인터넷 연결이 없는 환경에서 검토 후 외부 AI 도구와 분리합니다.
책임 있는 공개와 OpenAI의 커뮤니케이션 부재
이번 취약점은 책임 있는 공개 방식으로 전달되었으나, OpenAI의 대응이 우려를 자아냅니다. PromptArmor는 2026년 5월 8일 이메일로 최초 제보 후 5월 12일, 5월 18일 두 차례 후속 연락을 했지만 공개 시점까지 자동 응답 외의 커뮤니케이션이 없었습니다. 이후 5월 27일 공개되었고 5월 31일에야 OpenAI가 공식 응답했습니다.
이 시간차는 보안 연구자와 AI 기업 간의 신뢰 형성에 부정적 영향을 줍니다. LLM 에이전트 제품군이 늘어날수록 책임 있는 공개 채널의 실효성이 보안 생태계 전반의 신뢰를 좌우합니다.
향후 전망
이번 사건은 LLM 기반 에이전트 제품의 보안 설계가 아직 성숙 단계에 도달하지 못했음을 보여줍니다. PromptArmor 사례가 시사하는 핵심 교훈은 모델에게 권한 있는 도구를 부여할 때 신뢰 경계를 명확히 분리해야 한다는 점입니다.
샌드박싱, 도구 호출 경로 제한, 사용자 의도와 외부 데이터의 분리 같은 시스템 레벨 방어가 단순한 프롬프트 차단을 넘어선 필수 요소입니다. AI 기업들은 모델의 프롬프트 인젝션 저항성을 강화하는 동시에, 최악의 경우 피해를 최소화할 수 있는 권한 분리 구조를 채택해야 합니다.
조직과 사용자 입장에서 가장 현실적인 대응은 민감 데이터와 AI 도구의 물리적 분리 입니다. 편리함과 보안 사이의 균형점은 앞으로도 지속적으로 재조정될 것이며, 이번 사건은 그 균형점이 생각보다 공격자에 가깝게 설정되어 있음을 적나라하게 보여주었습니다.
📚 출처
📚 출처
'AI 뉴스' 카테고리의 다른 글
| Spanlens - LLM 호출과 에이전트 trace를 한 곳에서 보는 오픈소스 관측 플랫폼 (0) | 2026.06.02 |
|---|---|
| 10년 된 Xeon으로 LLM을 돌리다 — Gemma 4 26B를 GPU 없이 실행한 사례 (0) | 2026.06.02 |
| MiniMax-M3 데뷔, GPT-5.5·Gemini 3.1 Pro 추월하고 비용은 5-10% 수준 (0) | 2026.06.02 |
| NVIDIA RTX Spark 공개 — 개발자가 알아야 할 핵심 정리 (0) | 2026.06.02 |
| Show GN: $300/월 AI 비용을 절반으로 줄인 OSS — claude-ns-hub 완벽 가이드 (0) | 2026.06.02 |