최근 보안 연구팀이 ChatGPT의 공유 기능을 악용해 사용자 계정을 탈취할 수 있는 심각한 보안 취약점(P1 등급)을 발견했습니다. 공격자는 악성 대화를 생성하고 이를 공유 링크로 배포한 뒤, 피해자가 해당 링크를 열기만 해도 피해자의 인증된 웹 세션 내에서 임의의 자바스크립트(JavaScript) 코드를 실행할 수 있었습니다. 이는 사용자가 별도의 설치나 코드 입력 없이 단순히 링크를 클릭하는 것만으로 계정 전체가 위험에 노출될 수 있음을 의미합니다.
이 취약점은 ChatGPT의 두 가지 기능, 즉 HTML 미리보기(Preview)와 그래프(Graph) 기능의 예상치 못한 상호작용에서 비롯되었습니다. ChatGPT는 사용자가 HTML 코드를 미리 볼 수 있도록 제한된 환경(샌드박스)에서 실행하지만, 대화 내의 그래프 기능이 로드하는 MathLive 라이브러리가 메인 페이지에 메시지 리스너를 설치했습니다. 이 리스너는 발신자 검증 없이 가상 키보드 레이아웃 변경 메시지를 수락했고, 공격자는 이 점을 이용해 HTML 미리보기에서 메인 ChatGPT 페이지로 악성 HTML을 주입할 수 있었습니다. 주입된 HTML은 srcdoc 속성을 가진 iframe을 통해 실행되었고, ChatGPT의 콘텐츠 보안 정책(CSP)을 우회하기 위해 유튜브(YouTube)의 JSONP 엔드포인트를 활용하여 최종적으로 피해자의 세션에서 자바스크립트 코드를 실행하는 데 성공했습니다.
이번 취약점은 겉보기에는 무해해 보이는 여러 기능들이 결합될 때 얼마나 심각한 보안 문제가 발생할 수 있는지 보여주는 사례입니다. 특히 대규모 언어모델(LLM) 서비스가 사용자 데이터를 광범위하게 다루고 다양한 외부 연동 기능을 제공하는 상황에서, 샌드박스(sandbox) 격리 및 콘텐츠 보안 정책(CSP)의 중요성을 다시 한번 상기시킵니다. OpenAI는 이 문제를 신속하게 인지하고 패치하여 더 큰 피해를 막았지만, 앞으로도 복잡한 시스템에서 발생할 수 있는 예상치 못한 상호작용에 대한 지속적인 보안 검토가 필수적임을 시사합니다.
