ChatGPT for Google Sheets가 워크북을 외부 유출함
1 week ago
6
- ChatGPT for Google Sheets 확장은 출시 한 달 미만에 185,000회 이상 다운로드됐고, Google Sheets 사이드바에서 스프레드시트 작업과 ChatGPT 커넥터 데이터를 다룸
- 신뢰할 수 없는 시트나 커넥터 데이터의 간접 프롬프트 인젝션은 정상 질의 한 번만으로 공격자 제어 외부 스크립트 실행을 유도할 수 있음
- 공격은 확장에 부여된 권한으로 실행돼 현재 워크북과 연결된 워크북을 유출하며, 예시에서는 내부 재무 모델 링크를 따라 12개 워크북까지 유출함
- 같은 스크립트는 ChatGPT 사이드바를 공격자 제어 챗봇으로 덮거나 피싱 팝업을 띄울 수 있고, 자동 편집 비활성화와 stop 버튼으로도 차단되지 않음
- OpenAI는 모델의 Apps Script 코드 생성을 제거했고, Google Sheets API 상호작용과 샌드박싱 접근 및 유사 기능을 재검토하겠다고 밝힘
취약점 개요
- OpenAI의 ChatGPT for Google Sheets 확장 기능은 출시 한 달 미만에 185,000회 이상 다운로드됐고, Google Sheets 사이드바의 AI 챗봇으로 스프레드시트 작업을 수행하며 ChatGPT 커넥터 데이터도 활용 가능함
- 신뢰할 수 없는 데이터 소스에 간접 프롬프트 인젝션이 포함되면, 사용자의 정상 질의 한 번만으로 ChatGPT가 공격자 제어 외부 스크립트를 실행하도록 조작될 수 있음
- 공격은 사용자가 ChatGPT for Google Sheets 확장에 부여한 권한으로 실행되며, 한 번의 주입으로 다음 피해가 가능함
- 피해자 계정 전반의 여러 워크북 외부 유출
- 인터랙티브 피싱 팝업 표시
- GPT 사이드바 전체를 공격자 제어 챗봇 인터페이스로 덮어쓰기
- 공격자 제어 방식의 워크북 편집
- 사용자가 ChatGPT가 워크북을 편집하기 전에 사람 승인을 요구하도록 설정해도, 이 공격은 사람 승인 없이 성공함
- OpenAI는 ChatGPT for Google Sheets에서 모델이 Apps Script 코드 생성을 할 수 없도록 제거했으며, 이 조치로 사용자 위험이 제거돼야 한다고 밝힘
- OpenAI는 Google Sheets API와 기능 상호작용 및 샌드박싱 접근을 재평가하고, 유사 기능도 재검토하겠다고 밝힘
공격 흐름
-
내부 재무 모델 작업
- 사용자는 내부 재무 모델이 들어 있는 Google Sheets 워크북에서 작업 중인 상태로 시작함
-
외부 데이터 세트 가져오기
- 사용자는 모델에 활용하기 위해 외부 데이터 세트를 가져옴
- 외부 데이터는 가져온 시트나 ChatGPT 커넥터처럼 신뢰할 수 없는 데이터 소스가 될 수 있음
-
흰색 텍스트로 숨겨진 프롬프트 인젝션
- 외부 시트에는 흰색 텍스트로 숨겨진 프롬프트 인젝션이 포함됨
- 사용자는 이를 정상 데이터처럼 취급하지만, ChatGPT가 시트 내용을 처리할 때 주입 지시가 모델 동작을 조작할 수 있음
-
사용자의 정상 요청
- 사용자는 ChatGPT for Google Sheets에 가져온 시트 데이터를 재무 모델에 통합하도록 도움을 요청함
- 정상적인 사용자 질의 하나가 공격 트리거가 됨
-
외부 스크립트 실행
- 주입된 지시가 ChatGPT for Google Sheets를 조작해 공격자 제어 외부 스크립트를 실행하게 만듦
- ChatGPT for Google Sheets에는 에이전트 동작 완료 전에 사람 승인이 필요한지를 정하는 Apply edits automatically 설정이 있음
- 사용자가 자동 편집을 명시적으로 비활성화해도 이 공격은 성공함
-
현재 워크북 유출
- 외부 스크립트는 사용자의 워크북에서 재무 모델을 외부로 유출함
- 공격자 서버 로그에는 유출된 재무 모델이 표시됨
-
연결된 워크북 연쇄 유출
- 외부 스크립트는 훔친 데이터 안에서 다른 워크북 링크를 식별하고, 발견한 워크북도 유출함
- 예시에서는 내부 재무 모델 시트에 예산 관련 다른 스프레드시트 링크가 포함돼 있었고, 악성 스크립트가 해당 URL을 찾아 새로 발견한 워크북을 유출함
- 스크립트는 훔친 데이터를 계속 처리하며 추가 워크북을 식별하고 유출해, 최종적으로 12개 워크북을 유출함
- ChatGPT 사이드바의 stop 버튼을 눌러도 이미 시작된 스크립트 실행 완료는 중단되지 않음
피싱 오버레이 공격
- 같은 공격자 제어 스크립트는 데이터 유출뿐 아니라 피싱 오버레이 공격 두 가지 변형도 가능하게 만듦
-
변형 1: 사이드바 오버레이
- 공격자 제어 사이트가 담긴 사이드바가 열리고, ChatGPT for Google Sheets 확장 위를 덮어 확장 기능을 사칭할 수 있음
- 악성 사이드바는 ChatGPT처럼 시트를 편집하는 스크립트를 실행할 수 있어, 확장이 정상적으로 수행하는 대부분의 동작을 흉내 내면서 악성 활동도 수행 가능함
- 가능한 악성 활동에는 다음이 포함됨
- 모든 사용자 프롬프트 수집
- 사용자가 상호작용하는 조작된 챗봇 제공
- 추가 앱 접근 권한을 얻기 위해 커넥터를 다시 연결하도록 유도
- OpenAI 자격 증명을 훔치기 위한 피싱 UI 표시
-
변형 2: 팝업 모달
- 공격자 제어 웹사이트를 렌더링하는 팝업 모달이 열려 사용자 자격 증명을 피싱할 수 있음
접근 제어 설정
- 조직은 다음 설정 경로를 통해 ChatGPT for Google Sheets 접근을 제어할 수 있음
- Workspace settings > Permissions & roles > ChatGPT for Excel and Google Sheets
공개와 대응 경과
- 취약점은 OpenAI에 책임 있는 공개 방식으로 전달됐고, 여러 차례 후속 연락 이후 초기 공개 시점까지는 자동 응답 외의 커뮤니케이션이 없었음
- OpenAI 문서는 모델에 부여되는 민감한 기능, 예를 들어 권한 있는 스크립트 실행이나 간접 프롬프트 인젝션을 통한 모델 조작 위험을 설명하지 않고, 기능 제한과 데이터 처리 우려에 초점을 맞추고 있었음
- 공개 목적은 위험 표면에 대해 정보에 기반한 판단을 가능하게 하는 데 있었음
-
타임라인
- 2026년 5월 8일: PromptArmor가 이메일로 OpenAI에 공개
- 2026년 5월 8일: OpenAI가 의도된 보고 채널임을 확인하는 자동 응답 전송
- 2026년 5월 8일: PromptArmor가 이메일 선호 확인
- 2026년 5월 12일: PromptArmor 후속 연락
- 2026년 5월 18일: PromptArmor 후속 연락
- 2026년 5월 27일: 공개
- 2026년 5월 31일: OpenAI 응답
- OpenAI는 보고를 인지한 뒤 사용자를 보호하기 위한 즉각 조치로 모델의 Apps Script 코드 생성 기능을 제거했으며, ChatGPT for Google Sheets의 사용자 위험을 제거해야 한다고 밝힘
- OpenAI는 해당 기능이 Google Sheets API와 상호작용하는 방식을 면밀히 검토하고, 프롬프트 인젝션 공격에 최대한 견고하도록 샌드박싱 접근을 재평가하겠다고 밝힘
- OpenAI는 다른 표면의 유사 기능도 재검토해 방어가 일관되고 효과적인지 확인하겠다고 밝힘
-
Homepage
-
개발자
- ChatGPT for Google Sheets가 워크북을 외부 유출함