핵심 요약
- 공격자가 보낸 챗GPT 대화 공유 링크를 열기만 해도 브라우저 내 로그인 세션이 탈취되는 심각한 취약점이 발견되었습니다.
- 격리된 HTML 미리보기와 그래프 라이브러리의 메시지 수신 허점, 유튜브 CSP 우회 기법이 결합되어 로그인 권한으로 악성 코드가 실행되었습니다.
- 해당 취약점을 통해 비공개 대화 내역 탈취 및 계정 제어가 가능했으며, 오픈AI는 이를 P1 등급으로 분류하고 긴급 패치했습니다.
요약 보안 연구팀 '파라미터(Parameter)'가 챗GPT(ChatGPT)의 공유 링크 하나만 열어도 계정을 완전히 탈취당할 수 있었던 심각한 보안 취약점을 공개했습니다. 피해자는 별도의 앱을 설치하거나 코드를 복사해 실행할 필요 없이, 공격자가 조작해 둔 일반 대화 공유 링크를 클릭하기만 해도 공격에 노출되는 구조였습니다.
공격의 발단은 언뜻 무해해 보이는 두 가지 기능인 'HTML 미리보기(Preview)'와 '대화형 그래프'의 조합에서 시작되었습니다. 원래 챗GPT의 미리보기 기능은 임의의 코드가 실행될 수 있어 별도의 격리된 샌드박스 프레임에서 돌아가며, 메인 챗GPT 페이지의 문서에는 직접 접근할 수 없도록 설계되어 있습니다. 하지만 대화창 내에 그래프를 띄울 때 로드되는 수학 라이브러리 'MathLive'가 메인 페이지에 가상 키보드 관련 메시지를 수신하는 `postMessage` 리스너를 설치하면서 허점이 발생했습니다.
MathLive의 리스너는 발신 출처(Origin)를 제대로 검증하지 않은 채 가상 키보드 레이아웃 변경 메시지를 그대로 수락했고, 이 레이아웃 데이터는 살균(Sanitize) 과정 없이 `innerHTML`을 통해 실제 챗GPT 페이지에 반영되었습니다. 연구팀은 여기에 `srcdoc` 속성을 가진 `iframe`을 삽입하여 메인 챗GPT 도메인 권한을 획득했습니다. 이후 인라인 스크립트를 차단하는 챗GPT의 콘텐츠 보안 정책(CSP)마저 허용 목록에 있던 유튜브(YouTube) oEmbed 엔드포인트의 JSONP 취약점을 이용해 우회하는 데 성공했습니다.
결과적으로 악성 자바스크립트는 피해자의 로그인 세션 권한으로 챗GPT 메인 페이지에서 완전히 실행되었습니다. 이를 통해 공격자는 피해자의 비공개 대화 목록을 조회하고, 공유한 적 없는 개인 대화 내용을 외부 서버로 빼돌렸으며, 피해자 명의로 인증 API를 직접 호출해 계정을 완전히 제어할 수 있었습니다. 이 취약점은 최고 심각도인 P1 등급으로 분류되었으며, 오픈AI(OpenAI) 측에 보고된 후 수정을 거쳐 해결되었습니다.
Sponsored · 광고