AI 보안

챗GPT 공유 링크 취약점 정리|미리보기 한 번에 비공개 대화 유출 가능했던 P1 결함, 8일 만에 수정

챗GPT 보안 결함 수정 완료 안내, 공유 링크 하나로 비공개 대화 유출, 미리보기 한 번 누르면 공격 코드 실행, 제보 8일 만에 수정, 최고 등급 P1 보상 5000달러

"동료가 보낸 챗GPT 공유 링크, 그냥 열어도 될까요?" 대부분은 괜찮지만, 최근까지는 링크 하나로 내 비공개 대화가 새어 나갈 수 있는 결함이 있었습니다. 결론부터 말하면, 보안업체 Parameter가 찾은 이 결함은 10월 18일(현지) 제보 후 8일 만에 수정됐고, 이용자가 따로 할 조치는 없습니다. OpenAI는 최고 심각도인 P1으로 분류하고 보상금 5,000달러를 지급했습니다.

목차 (6)

✅ 이 글에서 얻을 수 있는 것
1. 공격이 어떻게 작동했는지 (단계별)
2. 제보부터 수정까지 일정
3. 공유 링크를 다루는 습관

사건 한눈에

챗GPT 공유 링크 취약점 제보부터 수정까지 일정표, 10월 13일 문제 확인, 10월 18일 OpenAI 버그 바운티 제보, 10월 21일 P2에서 P1로 상향, 10월 26일 웹 화면 두 버전 수정 확인, 10월 28일 기술 문서 공개와 보상금 5000달러

항목 내용
발견 보안업체 Parameter
공격 통로 공개 링크로 공유한 챗GPT 대화
피해자 조작 링크 열기 + 미리보기 버튼 1번 (자동 실행 변형은 링크 열기만)
가능했던 일 최근 대화 목록·비공개 대화 열람과 외부 전송, 계정 대신 행동
심각도·보상 P1 (P2에서 상향), 5,000달러
현재 상태 수정 완료, 실제 악용 사례 보고 없음

공격은 이렇게 작동했다

  1. 공격자가 인터랙티브 그래프와 어시스턴트가 만든 HTML 미리보기를 담은 대화를 만들어 공개 링크로 공유합니다. 이메일, 메신저, 고객지원 티켓, SNS 어디로든 보낼 수 있습니다.
  2. 피해자가 링크를 열면 그래프를 그리기 위해 수학 라이브러리 MathLive가 메인 챗GPT 페이지에 로드됩니다. MathLive는 화면 키보드 메시지를 받는 리스너를 남깁니다.
  3. 피해자가 미리보기를 누르면 샌드박스 안의 미리보기가 메시지 두 개를 보냅니다. 리스너는 보낸 쪽을 확인하지 않고(출처 정책 "none") 키보드 배열 데이터라는 이름의 가공되지 않은 HTML을 받아들입니다.
  4. 이 HTML이 innerHTML로 들어가고, 걸러 줘야 할 보조 함수는 입력을 그대로 돌려주는 래퍼였습니다. 주입된 HTML은 샌드박스 속성이 없는 새 프레임을 만들고, 브라우저는 이를 chatgpt.com의 일부로 취급합니다.
  5. 콘텐츠 보안 정책(CSP)은 인라인 코드를 막았지만 유튜브 스크립트는 허용했습니다. 연구진은 콜백 값을 그대로 돌려주는 유튜브 엔드포인트로 스크립트를 실행시켰습니다.
  6. 실행된 코드는 피해자의 세션 정보로 대화 API를 직접 호출해 비공개 대화를 열고, 선택한 값을 이미지 요청 형태로 외부 서버에 보냈습니다.

미리보기 샌드박스 자체는 끝까지 뚫리지 않았습니다. 같은 페이지에 함께 로드된 다른 기능이 옆문이 된 것입니다.

원인은 설계 세 가지

원인 설명
출처 미확인 MathLive가 어느 프레임이 보냈는지 확인하지 않고 설정 변경 메시지를 처리
데이터에 HTML 키보드 배열 데이터라는 이름으로 가공되지 않은 HTML을 실을 수 있었음
신원 상속 그 HTML이 샌드박스 없이 chatgpt.com 신원을 물려받는 프레임을 만들 수 있었음

Parameter는 "CSP는 가치 있는 심층 방어책이지만 안전하지 않은 렌더링 경로를 안전하게 만들 수는 없다"고 적었습니다. 유튜브 단계는 마지막 우회 수단일 뿐, 이것만 막아도 구조적 문제는 남는다는 뜻입니다.

💡 개발자 관점 체크포인트: postMessage 수신 코드에서 event.origin을 반드시 확인하고, 외부 메시지로 받은 HTML은 살균(sanitize) 없이 innerHTML에 넣지 마세요. 서드파티 라이브러리가 남기는 리스너도 점검 대상입니다.

📌 함께 보면 좋은 가이드: Sign in with ChatGPT 정리 — 챗GPT 계정을 외부 앱에 연결할 때 권한을 관리하는 법입니다.

공유 링크 다루는 습관

습관 이유
모르는 사람이 보낸 공유 대화는 열지 않기 공유 대화도 낯선 첨부파일처럼 공격 통로가 될 수 있음
공유 대화 속 미리보기는 꼭 필요할 때만 실행 이번 공격의 방아쇠가 미리보기 버튼이었음
내가 만든 공유 링크 주기적으로 정리 공유한 대화가 어디까지 퍼졌는지 알기 어려움
민감한 대화는 공유 링크 대신 요약본 전달 대화 전체 노출을 줄임

맺음말

  1. 챗GPT 공유 링크를 열고 미리보기 한 번으로 비공개 대화가 유출될 수 있던 P1 결함이 있었습니다.
  2. 10월 18일(현지) 제보 후 8일 만에 서버 쪽에서 수정됐고, 이용자가 할 조치는 없습니다.
  3. 그래도 공유된 AI 대화는 낯선 첨부파일처럼 다루고, 내 공유 링크는 주기적으로 정리하세요.

공식 자료

👉 다음에 읽을 글
- 가짜 클로드 코드 확장, 커서에서 최대 5,000명 설치 — 같은 주에 나온 AI 개발 도구 공급망 공격입니다.
- 챗GPT 채팅 잠금 사용법 — 민감한 대화를 PIN으로 잠그는 방법입니다.

자주 묻는 질문

지금도 위험한가요?
아닙니다. OpenAI가 10월 26일(현지)까지 챗GPT 웹 화면 두 버전 모두에 수정을 배포했고, 수정은 서버 쪽에서 이뤄져 이용자가 설치하거나 바꿀 것은 없습니다. 연구진도 실제 악용 사례는 보고하지 않았습니다.
어떤 링크가 위험했나요?
인터랙티브 그래프와 HTML 미리보기(Preview)가 함께 담긴 공유 대화입니다. 링크를 열고 미리보기 버튼을 한 번 누르면 공격 코드가 실행됐고, 미리보기가 자동으로 열리게 만든 변형에서는 링크를 여는 것만으로 충분했습니다.
무엇을 빼낼 수 있었나요?
링크를 연 사람의 로그인 세션 권한으로 최근 대화 목록과 공유한 적 없는 비공개 대화를 열어 외부 서버로 보낼 수 있었습니다. 연구진은 사실상 피해자 계정으로 어떤 행동이든 할 수 있었다고 설명했습니다.
샌드박스가 있었는데 왜 뚫렸나요?
미리보기 샌드박스 자체는 뚫리지 않았습니다. 같은 대화의 그래프가 메인 페이지에 불러온 수학 라이브러리 MathLive의 메시지 수신 코드가 보낸 쪽을 확인하지 않고 가공되지 않은 HTML을 받아들인 것이 침투 경로였습니다.
앞으로 공유 링크는 어떻게 다뤄야 하나요?
공유된 AI 대화를 낯선 첨부파일처럼 다루고, 아는 사람이 보낸 링크만 여는 것이 좋습니다. 내가 만든 공유 링크도 설정에서 주기적으로 정리하세요.