연구진, ChatGPT 공유 링크 계정 탈취 취약점 공개

parameter.ai2026년 11월 1일 (일)
연구진, ChatGPT 공유 링크 계정 탈취 취약점 공개
  • •연구진은 공개 ChatGPT 공유 링크가 로그인된 수신자의 세션에서 자바스크립트를 실행해 비공개 대화에 접근할 수 있음을 보였습니다.
  • •취약점은 HTML 미리보기, 그래프가 불러온 MathLive 리스너, 샌드박스 없는 프레임 콘텐츠, YouTube JSONP 응답을 결합했습니다.
  • •OpenAI는 10월 26일 영향을 받은 웹 프런트엔드 두 버전을 수정하고 취약점을 P1으로 분류해 총 5,000달러의 포상금을 지급했습니다.

연구진은 2026년 10월 28일, 공개 ChatGPT 공유 링크를 연 사용자가 로그인한 세션 안에서 공격자가 제어하는 자바스크립트가 실행될 수 있다고 보고했습니다. 공격자는 비공개 대화 목록을 확인하고, 공유받지 않은 대화의 메시지를 가져와 일부 데이터를 외부 서버로 전송할 수 있었습니다. 피해자는 링크를 열기만 하면 됐으며, 시험한 버전 하나에서는 약 4.5초 뒤 페이지가 자동으로 악성 코드를 실행했습니다. OpenAI는 10월 26일 문제를 수정하고 이를 P1으로 분류했으며, 연구진에게 총 5,000달러의 포상금을 지급했습니다.

취약점은 ChatGPT의 HTML 미리보기와 대화형 그래프 기능을 결합했습니다. 미리보기 코드는 다른 웹 주소의 제한된 프레임에서 실행돼 ChatGPT 본 페이지를 직접 읽을 수 없었습니다. 그러나 그래프가 수학 입력 라이브러리인 MathLive를 불러오면서 본 페이지에 메시지 수신기를 설치했습니다. 이 수신기는 메시지를 보낸 웹 주소나 창을 확인하지 않았고, 가상 키보드에 표시할 HTML을 메시지에 담도록 허용했습니다. 이에 따라 미리보기는 격리된 프레임과 로그인된 페이지 사이의 경계를 넘어 키보드 배치를 바꾸는 메시지를 보낼 수 있었습니다.

MathLive가 전달받은 배치를 표시할 때 HTML을 ChatGPT 페이지에 삽입했습니다. 연구진은 프레임에 HTML을 직접 제공하는 속성인 `srcdoc`을 사용해 샌드박스가 없는 문서를 만들었고, 그 코드가 `chatgpt.com`의 출처로 인식되게 했습니다. 페이지 리소스 실행을 제한하는 콘텐츠 보안 정책(CSP)은 인라인 자바스크립트를 차단했지만 YouTube 스크립트는 허용했습니다. 연구진은 콜백 함수가 포함된 자바스크립트를 반환하는 YouTube oEmbed 엔드포인트를 이용했습니다. 오류 응답에도 콜백이 들어 있어 새 프레임 안에서 코드가 실행됐습니다.

초기 시험에는 연구진이 제어하는 ChatGPT 앱이 필요했습니다. 이후 연구진은 실제 그래프와 어시스턴트가 작성한 HTML 미리보기를 하나의 공개 대화에 넣어 공유 링크에 메시지 수신기와 악성 코드가 함께 실리게 했습니다. 안정적으로 재현할 때는 피해자가 미리보기를 한 번 클릭했으며, 후속 버전에서는 미리보기가 자동으로 열렸습니다. 연구팀은 강제 새로고침 뒤를 포함해 자동 실행 경로를 세 차례 재현했습니다. 그래프와 미리보기는 어느 쪽이 먼저 로드될지 달라질 수 있어, 악성 코드는 제한된 시간 동안 메시지를 재시도했습니다.

연구진은 삽입된 코드가 화면에 보이는 글을 읽는 데 그치지 않고 피해자의 인증된 세션으로 ChatGPT 대화 API를 호출했다고 밝혔습니다. 이들은 비공개 대화 내용을 가져오고 응답 일부를 자신들이 제어하는 서버로 보내는 과정을 시연했습니다. 연구진은 같은 접근 방식으로 인증된 프런트엔드 API가 제공하는 다른 작업에도 접근할 수 있다고 설명했습니다. OpenAI는 자바스크립트 실행과 비공개 대화 접근 시연을 재현했습니다. 수정 사항은 웹 프런트엔드 두 버전 모두에서 프레임 간 MathLive 메시지를 거부하도록 했습니다. 연구진의 일정에 따르면 10월 13일 메시지에서 HTML로 이어지는 경로를 확인했고, 10월 18일 보고서를 제출했습니다. OpenAI는 10월 21일 문제를 재현하고 심각도 등급을 P2에서 P1으로 높였으며, 10월 26일 해결을 확인했습니다.

카톡