
ChatPlayground.ai는 AI 모델을 비교하는 인기 있는 웹 애플리케이션입니다. 채팅 컴포넌트에 XSS(Cross-Site Scripting) 취약점이 존재합니다. 이로 인해 JWT 토큰 탈취 및 원격 계정 탈취가 발생할 수 있습니다. 또한 /api/chat-history 엔드포인트는 취약한 접근 제어(IDOR)를 보입니다. 공격자는 이 IDOR을 악용하여 JWT 토큰의 사용자 이름으로 피해자의 채팅 기록에 접근할 수 있으며, JWT 토큰이 만료된 후에도 개인 데이터 유출로 이어질 수 있습니다.
ChatPlayground.ai는 AI 모델을 비교하는 인기 있는 웹 애플리케이션입니다. AI 모델 비교 플랫폼인 ChatPlayground.ai의 채팅 컴포넌트(https://www.chatplayground.ai/chat/)에 XSS(Cross-Site Scripting) 취약점이 존재합니다. 피해자는 악성 텍스트를 채팅 컴포넌트에 복사하여 붙여넣음으로써 공격을 받을 수 있습니다.
공격자는 악성 텍스트에 SVG XSS 페이로드를 삽입하여 임의의 JavaScript 코드를 실행할 수 있습니다. 이는 self-XSS 취약점입니다. JavaScript 코드를 실행함으로써 공격자는 피해자의 JWT 토큰(사용자의 로그인 상태를 식별하는 데 사용됨)을 획득할 수 있으며, 이는 원격 계정 탈취로 이어집니다. 그림 1은 사용자가 Self-XSS 페이로드를 입력한 후의 UI 렌더링을 보여주며, 사용자의 JWT 토큰이 유출됩니다.

또한 피해자의 JWT 토큰에는 Base64로 인코딩된 사용자 이름이 포함되어 있습니다. ChatPlayground.ai의 사용자 기록 조회 API 엔드포인트(https://www.chatplayground.ai/api/chat-history)는 취약한 접근 제어를 보입니다. 이 API는 인가를 위해 요청의 사용자 이름 필드에만 의존하므로, 안전하지 않은 직접 객체 참조(IDOR) 또는 깨진 접근 제어 취약점이 발생합니다. 초기 XSS 공격 이후, 공격자는 피해자의 사용자 이름을 추출할 수 있으며, JWT 토큰이 만료된 후에도 이 사용자 이름을 사용하여 피해자의 채팅 기록에 계속 접근할 수 있습니다. 이를 통해 피해자의 개인 데이터가 지속적으로 유출될 수 있습니다. 그림 2는 chatplayground.ai의 IDOR 취약점 POC를 보여주며, 피해자의 채팅 기록이 공격자에게 유출됩니다.

이 취약점은 https://www.chatplayground.ai의 모든 사용자에게 영향을 미칠 수 있습니다. 사용자의 개인 데이터, 즉 채팅 기록의 개인 정보가 지속적으로 유출될 수 있습니다.