ChatGPT 공유 링크 하나로 계정 탈취 가능한 취약점 발견
원제 We Took over ChatGPT Accounts
140 포인트댓글 62

Key Point
공개 링크 하나만으로 남의 ChatGPT 계정을 완전히 제어할 수 있었던 심각한 보안 결함이며, 샌드박스 · 메시징 · CSP 같은 개별 방어 수단이 어떻게 조합되면 무너지는지 보여주는 사례입니다.
핵심 요약
- 2026년 10월, 공개 공유된 ChatGPT 대화 링크를 통해 피해자의 인증된 세션에서 임의의 JavaScript를 실행할 수 있는 취약점이 발견됐다.
- 그래프 기능이 MathLive 라이브러리를 로드할 때 메인 페이지에 메시지 리스너를 설치했고, HTML Preview에서 postMessage API를 통해 출처 검증 없이 신뢰되지 않은 HTML을 포함한 메시지를 보낼 수 있었다.
- MathLive가 수신한 메시지의 발신자를 확인하지 않고, HTML을 키보드 레이아웃으로 받아들였으며, 이를 ChatGPT 메인 페이지에 innerHTML로 삽입했다.
- srcdoc 속성을 가진 iframe을 통해 샌드박스 없이 생성된 새 문서는 chatgpt.com 출처를 상속받아 JavaScript 실행이 가능했다.
- CSP 우회를 위해 YouTube의 oEmbed 엔드포인트의 JSONP 콜백 검증 오류를 이용해 공격자 제어 JavaScript를 실행했다.
- 피해자의 개인 대화 목록을 열거하고, 공유받지 않은 비공개 대화의 내용을 검색한 후, 외부 서버로 데이터를 전송할 수 있었다.
- 공격자는 악의적인 대화를 만들어 ChatGPT의 일반 공유 기능으로 배포한 후 피해자에게 링크를 보내면, 피해자가 링크를 열기만 해도 공격이 작동했다.
- 피해자는 앱 설치, 개발자 도구 열기, 코드 붙여넣기 등 어떤 추가 조치도 할 필요가 없었다.
- OpenAI는 10월 26일 MathLive 메시지 검증 실패, 신뢰되지 않은 HTML이 메인 페이지에 도달하는 점, 동적 생성 문서의 샌드박스 부재, 출처 검증 없는 교차 윈도우 메시징을 근본 원인으로 삼았다.
- 개별 기능은 각각 안전했으나, 공개 공유 · Preview · MathLive · 프레임 생성 · CSP의 조합에서만 취약점이 나타났다.
- OpenAI는 문제를 P1 심각도로 분류하고 두 버전의 웹 프론트엔드를 업데이트해 10월 26일 완전히 해결했으며, 총 5,000달러의 버그 바운티를 지급했다.