2026년 10월 31일 - Link Blog
How We Took Over ChatGPT Accounts (via) Parameter Labs는 ChatGPT가 artifacts pattern을 구현하는 과정에서 발견한 취약점을 설명합니다. 이 패턴은 대화형 사용자 지정 HTML 앱이 격리된 iframe 내에 표시되는 방식입니다.
HTML이 안전하게 격리되어 신뢰할 수 없는 코드가 OpenAI API와 상호작용하거나 개인 데이터에 접근하는 것을 방지하는 것이 중요합니다.
Parameter는 상당히 복잡한 공격 체인을 발견했습니다. OpenAI는 그래프 지원의 일부로 MathLive JavaScript 라이브러리를 사용하며, 이 라이브러리는 자체 가상 키보드를 포함하고 있습니다. 이 키보드는 postMessage()를 통해 부모 페이지에서 트리거될 수 있습니다.
이 메시지 수신 코드는 innerHTML을 사용하기 때문에, 메시지를 보내는 모든 것이 부모에 사용자 지정 HTML을 추가할 수 있었습니다. 그리고 다른 격리된 프레임(HTML 미리보기 프레임 포함)이 이 메서드를 호출하는 것을 막는 메커니즘이 없었습니다.
이는 iframe 내의 신뢰할 수 없는 코드가 HTML을 삽입할 수 있음을 의미합니다. innerHTML 자체가 스크립트 요소를 직접 실행하지는 않지만, 이를 사용하여 샌드박스 제한 없이 새로운 iframe을 주입하는 데 사용될 수 있었습니다.
OpenAI의 CSP(Content Security Policy) 규칙은 인라인(inline) 스크립트를 완전히 차단하고 소수의 도메인에서만 로드를 허용했지만, 그중 하나가 YouTube였고, YouTube oEmbed 엔드포인트는 JavaScript를 반사하여 실행할 수 있는 방식으로 사용될 수 있었습니다.
ChatGPT에서 자바스크립트 실행에 성공하자, API로부터 개인 사용자 데이터를 가져와 이미지 참조를 통해 유출하는 것은 간단했습니다.
최종 결과: 다른 로그인된 사용자가 방문하면 그들의 개인 데이터를 유출하거나 대리하여 행동을 취할 수 있는 ChatGPT 공유 URL을 만들 수 있었습니다.
OpenAI는 이 구멍을 막고 $5,000의 버그 바운티를 지급했는데, 이는 매우 심각한 취약점치고는 다소 적다고 생각합니다.
최근 기사
- Vibe Game Development를 위한 10월 변곡점 - 2026년 10월 28일
- Battle Drones - 오디오 기반 멀티플레이가 가능한 Vibe Coded RTS - 2026년 10월 20일
- 안녕하세요 Python 3.15, 안녕히 가세요 3.10, 이제 저는 3.11을 사용할 수 있게 되었어요 - 2026년 10월 12일
- 제 블로그에 추가된 새로운 기능 (제 목소리를 사용해 제작됨) - 2026년 10월 9일